Я знаю, что вы можете изменить пульт по умолчанию для ветки, выполнив:
git push -u remote branch
Но у меня есть несколько пультов, и я хочу просто иметь возможность:
git pull remote1
git push remote2
И иметь ветку по умолчанию для каждого пульта (вероятно, то же самое, но не обязательно).
Я надеялся не делать git pull remote branch
и git push remote branch
каждый раз.
Моя текущая конфигурация имеет это:
[branch "main"]
remote = origin
И это только из-за того, что я сделал вышеупомянутое git push -u ...
для моего «основного» пульта.
Трехсторонние («треугольные») рабочие процессы не так уж хорошо поддерживаются в Git, но в некоторых особых случаях может быть полезно установить git config push.default
, а в других особых случаях можно установить remote.remote.pushurl
с пользой.
Проблема на самом фундаментальном уровне заключается в том, что любая ветвь может иметь только один набор вверх по течению; восходящий поток объединяет как имя удаленного устройства, так и имя ветки, найденное на этом удаленном устройстве, поэтому, если для ветки Б установлен восходящий поток U, запуск git push
без аргументов отправляет на (один) назначенный удаленный, используя (один) назначенный имя, а git pull
извлекается из (того же самого, одного) назначенного удаленного устройства и объединяется с (одним и тем же) единственным назначенным именем.
Использование git push -u
— это просто короткий способ сказать: после того, как мой git push
преуспеет, пожалуйста, бегите git branch --set-upstream-to
и за меня. Поскольку это устанавливает (один, единственный) восходящий поток, это почти наверняка не то, что вы хотите здесь делать: либо восходящий поток уже установлен правильно, либо вы хотите установить его до (не после) команда git push
.
Лучшее значение Лучший здесь, вероятно, равно прекратите использовать git push
и git pull
. Вместо этих команд напишите свои собственные команды, которые используют ваши собственные настройки конфигурации, чтобы делать все, что вы хотите. Запустите эти команды, а не git push
и git pull
. (Эти команды в конечном итоге будут запускать команды Git, возможно, даже git push
и git pull
, но с соответствующими удаленными именами и спецификациями ссылок.)
В противном случае просмотрите настройки, доступные для push.default
, push.defaultRemote
и remote.name.push
, а также вышеупомянутые настройки remote.remote.pushurl
, описанные в git config
документация.