Если вы не хотите сбрасывать «восходящую конфигурацию» вашей локальной ветки, вы можете использовать это:
git pull remote1 "$(git rev-parse --symbolic-full-name HEAD)"
Вероятно, он будет делать неожиданные вещи, если ваш локальный заголовок отсоединен.
Вы можете упаковать его как псевдоним Git, чтобы его было проще набирать (хотя вам все равно нужно будет распространять псевдоним среди всех ваших пользователей):
git config --global alias.pullcb \ '!sh -c '\''git pull "$1" "$(git rev-parse --symbolic-full-name HEAD)"'\'' -'
Используйте псевдоним как это:
git pullcb remote1
Я предполагаю, что этот тип отношений ветвления (нужно легко извлечь из одной и той же именованной ветви на любом из нескольких пультов) не легко настраивается, потому что он редко полезен, когда большая часть работы выполняется в тематических ветвях .
С другой стороны, если «новый удаленный» будет новым первичным исходным источником для вашей локальной ветки, то вам следует рассмотреть возможность обновления «восходящей конфигурации» вашей локальной ветки, чтобы вы могли просто использовать git pull
(без указания удаленного имени ).
Вы можете проверить исходную конфигурацию ветки в Git 1.7.0 и более поздних версиях 1 с помощью
git rev-parse --symbolic-full-name my-branch@
Вы можете обновить исходную конфигурацию в Git 1.7.0 и позже 2 с помощью
git branch --set-upstream my-branch some-remote/their-branch
Как только ваша ветвь имеет соответствующую восходящую конфигурацию, вы можете просто использовать ее git pull
для извлечения из «восходящей ветки» текущей ветки.
В конечном счете, исходная конфигурация ветки контролируется переменными конфигурации branch.<name>.remote
и branch.<name>.merge
(см. Git-config (1) ). В --track
и --no-track
вариантах git branch
и git checkout
могут быть использованы для управления ли эти переменные устанавливаются при создании филиала. branch.autoSetupMerge
Переменной конфигурации управляет поведением по умолчанию (когда ни один --track
, ни --no-track
приведены); по умолчанию создается восходящая конфигурация для веток, созданных из веток удаленного отслеживания. Таким образом, следующие команды создают новую локальную ветку «my-branch» и настраивают ее для отслеживания ветки «them-branch» с удаленного «some-remote»:
git branch my-branch some-remote/their-branch git checkout -b my-branch some-remote/their-branch
1 Для версий Git до 1.7.0 вы можете проверить исходную конфигурацию «my-branch» следующим образом:
git config branch.my-branch remote && git config branch.my-branch.merge
Смотрите git-config (1) для описания значений.
Вы также можете вручную проверить .git/config
файл.
2 Для версий Git до 1.7.0 вы можете изменить исходную конфигурацию для «my-branch» следующим образом:
git config branch.my-branch.remote some-remote && git config branch.my-branch.merge refs/heads/their-branch
Смотрите git-config (1) для описания значений.
Вы также можете вручную редактировать .git/config
файл ( git config -e
в Git 1.6.3 и более поздних версиях).