Отключите ускоренное слияние для обычного слияния, но не для вытягивания
Я хочу, чтобы git всегда делал коммиты слияния (--no-ff
) когда я использую git merge
, но сохранить поведение по умолчанию (--ff
) за git pull
, Это возможно (с конфигами)?
2 ответа
Два конфига, которые могут помочь:
merge.ff
(От git merge
man page): когда установлено false
эта переменная говорит Git создать дополнительный коммит слияния в таком случае (эквивалентно --no-ff
вариант из командной строки).
pull.ff
(от git config
справочная страница)
настройка pull.ff
в true
сохранит поведение по умолчанию, при котором Git не создает дополнительный коммит слияния при слиянии коммита, который является потомком текущего коммита.
Быть проверенным: делает pull.ff
имеет приоритет над merge.ff
?
git config pull.ff only
git config merge.ff false
Как отмечено в ответе Kelvin и подтверждено git-pull.sh
' only
"это значение использовать, а не" true
".
Вот мой предварительный рабочий процесс (обратите внимание, что pull.ff
опция config работает только на git 2.x.)
Используйте этот конфиг:
- Задавать
merge.ff
вfalse
, Это по умолчаниюmerge
поведение к--no-ff
, - Задавать
pull.ff
вonly
, Это по умолчаниюpull
поведение к--ff-only
,
Это означает, что если вы попытаетесь pull
филиал, где ваш местный житель находится позади и впереди пульта, pull
не удастся. В этом случае сделайте rebase
так что ты больше не позади.
Замечания:
Я пробовал настройку pull.ff
в true
но git, похоже, рассматривает это так, как будто опция полностью не установлена. Обратите внимание, что на странице руководства не упоминается, что true
это признанная ценность.