Как установить для получения по запросу того же ответвления по умолчанию?

Когда я вытягиваю от новых добавленных пультов ДУ, я должен указать имя ответвления явно:

$ git pull remote1
... 
Error: you didn't specify a branch name.

$ git pull remote1 master

Хотя я продолжаю работать master ответвление.

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

Так, я могу настроить мерзавца, чтобы всегда вытянуть от ответвления с тем же именем?

5
задан 22.04.2011, 13:15

1 ответ

Если Вы не хотите сбрасывать “восходящую конфигурацию” Вашего локального ответвления, Вы могли использовать это:

git pull remote1 "$(git rev-parse --symbolic-full-name HEAD)"

Это, вероятно, сделает неожиданные вещи, если Ваш локальный ГЛАВА будет отсоединен.

Вы могли упаковать его как псевдоним Мерзавца, чтобы помочь ввести (хотя необходимо будет все еще распределить псевдоним всем пользователям):

git config --global alias.pullcb \
 '!sh -c '\''git pull "$1" "$(git rev-parse --symbolic-full-name HEAD)"'\'' -'

Используйте псевдоним как это:

git pullcb remote1

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


С другой стороны, если “новый удаленный” будет новым основным восходящим источником для Вашего локального ответвления, то необходимо рассмотреть обновление “восходящей конфигурации” локального ответвления, таким образом, можно просто использовать git pull (не указывая удаленное имя).

Можно проверить восходящую конфигурацию на ответвление в Мерзавце 1.7.0 и later1 с

git rev-parse --symbolic-full-name my-branch@{upstream}

Можно обновить восходящую конфигурацию в Мерзавце 1.7.0 и later2 с

git branch --set-upstream my-branch some-remote/their-branch

После того как Ваше ответвление имеет соответствующую восходящую конфигурацию, можно просто использовать git pull вытягивать от “восходящего ответвления текущего ответвления”.


В конечном счете восходящей конфигурацией ответвления управляют branch.<name>.remote и branch.<name>.merge переменные конфигурации (см. конфигурацию мерзавца (1)). --track и --no-track опции git branch и git checkout может использоваться, чтобы управлять, установлены ли эти переменные, когда ответвление создается. branch.autoSetupMerge управление переменными конфигурации поведение по умолчанию (когда ни один --track, ни --no-track даны); это принимает значение по умолчанию к созданию восходящей конфигурации для ответвлений, созданных из удаленно отслеживающих ответвлений. Таким образом следующие команды создают новое локальное ответвление “мое-ответвление” и настраивают его для отслеживания ответвления “их-ответвление” от удаленного “некоторые - удаленный”:

git branch my-branch some-remote/their-branch
git checkout -b my-branch some-remote/their-branch

1 Для версий Мерзавца до 1.7.0, можно проверить восходящую конфигурацию на “мое-ответвление” как это:

git config branch.my-branch remote && git config branch.my-branch.merge

Посмотрите конфигурацию мерзавца (1) для описаний значений.

Можно также вручную осмотреть .git/config файл.

2 Для версий Мерзавца до 1.7.0, можно изменить восходящую конфигурацию для “моего-ответвления” как это:

git config branch.my-branch.remote some-remote &&
git config branch.my-branch.merge refs/heads/their-branch

Посмотрите конфигурацию мерзавца (1) для описаний значений.

Можно также вручную отредактировать .git/config файл (git config -e в Мерзавце 1.6.3 и позже).

7
ответ дан 07.12.2019, 17:28

Теги

Похожие вопросы