Отключите ускоренное слияние для обычного слияния, но не для вытягивания

Я хочу, чтобы 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 это признанная ценность.

Другие вопросы по тегам