Как заставить "git pull" снова работать как положено

2810
Andrew Arnott

Я использую msysgit (Git для Windows). Раньше было так, что запуск «git pull» автоматически «git fetch», а затем перебазировал мои изменения в каждой ветви с новым HEAD из апстрима. Теперь кажется, что «git pull» обычно выдает мне ошибки о том, что в моем файле конфигурации не установлено «branch. *. Merge». Когда это работало раньше, я не делал ничего особенного в моем конфигурационном файле. Это как я создаю свои местные филиалы? Я обычно делаю это:

git checkout -b localbranch origin/remotebranch

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

2

2 ответа на вопрос

5
Robert Munteanu

Вам нужно что-то похожее на следующее в вашем конфигурационном файле:

[branch "master"] remote = origin merge = refs/heads/master 

Если вам нужно добавить эту информацию для существующей ветви, вы можете использовать команду:

git branch --set-upstream mybranch origin/remotebranch 

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

git branch --track mybranch origin/remotebranch git checkout --track -b mybranch origin/remotebranch 

Тем не менее, --trackдолжно быть по умолчанию. Если это не так, то для параметра branch.autosetupmergeможет быть установлено значение false. Чтобы сбросить его, вы можете установить его в true или сбросить:

git config --global branch.autosetupmerge true git config --global --unset branch.autosetupmerge 
Благодарю. Это сделал это. Есть ли команда create branch, которую я могу использовать, которая делает это автоматически? Andrew Arnott 14 лет назад 0
0
vonbrand

Be careful with the above. I'm only familiar with git on Linux, so details might vary.

"git fetch" gets the changes, does nothing else "git pull" does a "git fetch" and then a "git merge" (i.e., it merges the remote changes into the current stuff) "git pull -r" does a "git fetch" and then a "git rebase" (i.e., updates the tip of the branch where you are to the remote one and then rebases your changes on top)

My help for "git pull" (version 1.8.1-290) directs me to look at branch.<name>.rebase and branch.autosetuprebase in "git config" to set this up automatically.

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