2016-01-11 2 views
0

Я хочу настроить локальную ветку отслеживания, которая будет отслеживать удаленную ветвь путем слияния, а не путем переадресации.
Когда я делаю git pull Я хочу объединиться из удаленной ветви, а не для переустановки.git: как настроить отслеживание ветки путем слияния, а не путем переустановки?

Когда я делаю:

git checkout -b someBranch origin/someBranch 

, а затем

git remote show origin 

Я видим:

Local branches configured for 'git pull': 
    someBranch rebases onto remote someBranch 
Local refs configured for 'git push': 
    someBranch pushes to someBranch (local out of date) 

То же самое происходит, если я

git checkout --track origin/someBranch 

Это как-то настраивается локально?
Как изменить это поведение?

ответ

4

По умолчанию GIT делает merge во время тяг. Если вы делаете rebase, то кажется, что в какой-то момент вы изменили это поведение. Или кто-то полезный сделал это для вас.

Приводя после this article (1) и this article (2) и this article (3) - которые все описывают, как сделать противоположные вещи:

(от 1) Существует флаг конфигурации в GIT, что, когда включена, изменил поведение по умолчанию pull от merge - rebase. Проверьте, установлено ли у вас:

# git >= 1.7.9: 
git config --global pull.rebase 
git config pull.rebase 

В новых клиентах GIT он работает интуитивно. Он включен, если он равен true. Просто выключите флаг.

В старых, однако, он работает по-разному.

# git < 1.7.9: 
git config --global branch.autosetuprebase 
git config branch.autosetuprebase 

# and also 
git config branch.<name>.rebase 

Когда autosetuprebase установлен в always, мерзавец автоматически устанавливает rebase флаг на каждом новом филиале. Это означает, что только вы, вероятно, захотите не только отключить autosetuprebase, но и отключить уже установленный флаг rebase для каждой ветки.

(от # 2)
Если вы хотите другой путь (то есть у вас есть старый GIT клиент и т ветвей и вы на самом деле ум писать сценарий, который сбрасывает флаги), то другой вариант, чтобы создать псевдоним для git pull, который добавит опцию --no-rebase, что заставит ее слить.

(from # 3)
В данной статье говорится, что флаг каждой ветви rebase хранится в файле конфигурации. Итак, после отключения autosetuprebase вы можете быстро отключить переустановку на всех или некоторых ветвях, удалив все строки rebase из этого файла конфигурации.

Смежные вопросы