Изменение параметра Git remote 'push to' по умолчанию

Я хочу изменить назначение удаленной ветки Git по умолчанию, чтобы я мог просто

git push

Вместо:

git push upstream

В настоящее время для этого установлен пуск источника, и я хочу установить его на другой пульт.

Я попытался удалить исходный (клонированный) удаленный

git remote rm origin

Который удалил оригинальный пульт. Но не решает проблему git push. Я все еще получаю:

фатальный: нет настроенного адресата push. Укажите URL-адрес из списка командной строки или настроить удаленный репозиторий, используя...

Я также попытался сыграть с:

git remote set-url --push myfork origin

и другие параметры, но ни один из них не работает (возможно, потому, что я слишком быстро удалил удаленный пульт?)

После ответа здесь я попытался изменить:

git config push.default upstream (or matching)

но ни один из них не работал.

+178
источник поделиться
9 ответов

Другая методика, которую я только что нашел для решения этой проблемы (даже если я сначала удалил начало, что, по-видимому, является ошибкой), напрямую управляет конфигурацией git:

git config remote.origin.url url-to-my-other-remote
+4
источник

Вы можете использовать git push -u <remote_name> <local_branch_name> для установки по умолчанию вверх по течению. Подробнее см. Документацию для git push.

+170
источник

Чтобы изменить, какой пульт дистанционного управления "подключен" к вашей ветке, используйте команду git branch с флагом конфигурации восходящего потока.

Убедитесь, что удаленный доступ существует первым:

git remote -vv

Установите предпочтительный пульт дистанционного управления для текущей (вывешенной) ветки:

git branch --set-upstream-to <remote-name>

Подтвердить, что ветвь настроена с правильным пультом дистанционного управления:

git branch -vv

+77
источник

Работа с Git 2.3.2...

git branch --set-upstream-to myfork/master

Теперь status, push и pull указываются на myfork remote

+33
источник

С помощью этой команды вы можете легко изменить удаленный пул по умолчанию для всех ветвей.

git push -u <remote_name> --all
+32
источник

Просто пояснение (с использованием git версии 1.7.9.5 на ubuntu 12.04):

Git добавит/удалит пульты. Это удаленные экземпляры git с подключенным сервером.

git remote add myremote git://remoteurl

Затем вы можете получить указанный репозиторий git следующим образом:

git fetch myremote

Кажется, это создает ветку с именем "myremote", однако удаленный элемент для ветки не устанавливается автоматически. Для этого вы должны сделать следующее:

Сначала убедитесь, что у вас есть эта проблема, т.е.

git config -l | grep myremote

Вы должны увидеть что-то вроде:

remote.myremote.url=git://remoteurl
remote.myremote.fetch=+refs/heads/*:refs/remotes/myremote/*
branch.myremote.remote=.
branch.myremote.merge=refs/heads/master

Если вы видите branch.myremote.remote=., вы должны продолжить:

git config branch.myremote.remote myremote
git checkout myremote
git pull

Теперь вы должны быть в курсе удаленного хранилища, а ваши тяги/нажатия должны быть привязаны к соответствующему пульту. Вы можете переключать пульты таким образом, на каждую ветвь. [Примечание] [1]

Согласно a Официальная git Документация по настройке, вы можете настроить ветвь push по умолчанию (просто выполните поиск remote.pushdefault на этой странице), однако имейте в виду, что это не повлияет на хранилища/ветки, которые уже существуют, поэтому это будет работать, но только для новых репозиториев/веток. Вы должны помнить, что --global установит пользовательские значения по умолчанию для репозитория (~/.gitconfig), --system установит значения по умолчанию для системного репозитория (/etc/gitconfig), и ни один флаг не установит параметры конфигурации для текущего репозитория (./. gitconfig).

Также следует отметить, что параметр конфигурации push.default предназначен для настройки поведения ref-spec, удаленного поведения не.

[1]: git branch --set-upstream myotherremote обычно работает здесь, однако git будет жаловаться, что он не будет устанавливать ветвь в качестве своего собственного пульта, если используется git branch --set-upstream myremote. Я считаю, однако, что это неправильное поведение.

+13
источник

Если вы выполнили git push origin -u localBranchName:remoteBranchName и последовательно использовали команды git push, вы получите ошибки, которых тогда не существует origin, а затем выполните следующие действия:

  1. git remote -v

Проверьте, есть ли какой-нибудь пульт, который меня не волнует. Удалить их с помощью git remote remove 'name'

  1. git config --edit

Ищите возможные признаки старого/несуществующего пульта дистанционного управления. Ищите pushdefault:

[remote]
  pushdefault = oldremote

Обновите значение oldremote и сохраните.

git push должен работать сейчас.

+8
источник

Очень просто, собрав вместе некоторые из замечательных комментариев, а также мои собственные исследования этого.

Сначала проверьте локальную ветку, которую вы хотите привязать к вашей удаленной ветке:

git checkout mybranch

Следующий:

git branch -u origin/mybranch

где:

git branch -u {remote name}/{branch name}

Вы должны получить сообщение:

"Branch mybranch set up to track remote branch mybranch from origin."
+4
источник

Может быть полезно взглянуть на .git/config внутри вашего репозитория, в нем будут перечислены все пульты, а также пульт по умолчанию для каждой ветки.

например.

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = [email protected]:fii/web2016.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "bugfix/#8302"]
    remote = origin
    merge = "refs/heads/bugfix/#8302"
[branch "feature/#8331"]
    remote = origin
    merge = "refs/heads/feature/#8331"
[remote "scm"]
    url = https://scm.xxx.be/git/web2016bs.git
    fetch = +refs/heads/*:refs/remotes/scm/*

Вы можете внести изменения в этот файл вручную, чтобы удалить ненужный пульт, или обновить пульты по умолчанию для разных ваших веток.

  • Обращать внимание! при изменении или удалении пульта убедитесь, что обновили все ссылки на него в этом конфигурационном файле
0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос