Можно ли сделать так, чтобы ускоренная пересылка была отключена по умолчанию в git?

Я действительно не могу думать о времени, когда я бы использовал git merge скорее, чем git rebase и не хочу, чтобы появился коммит. Есть ли способ настроить git на ускоренную пересылку по умолчанию? Тот факт, что есть --ff вариант может показаться, что есть способ, но я не могу найти его в документации.

6 ответов

Решение

Да, есть --no-ff, Вы можете настроить параметры слияния для каждой ветви, например,

git config branch.master.mergeoptions  "--no-ff"

добавляет следующее к вашему $(REPO)/.git/config файл:

[branch "master"]
    mergeoptions = --no-ff

Сноска: говоря о моем опыте, я в конечном итоге обнаружил, что переключение быстрой перемотки вперед на отключение было в основном полезным для новичков в git- однако, как только чувство рабочих процессов и концепций начнет погружаться в вас, вы определенно захотите избежать размывания своего лог-графа тоннами бессмысленных объединений. Тип удаленного..blarf 'фиксирует.

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

git config --add merge.ff false

... чтобы применить его ко всем веткам в текущем хранилище. Чтобы это применимо ко всем веткам во всех репозиториях, где кто-то не запускал его без --global опция (локальные настройки переопределяют глобальные) запустите это:

git config --global --add merge.ff false

Из документации:

merge.ff
По умолчанию git не создает дополнительный коммит слияния при слиянии коммита, который является потомком текущего коммита. Вместо этого верхушка текущей ветви быстро пересылается. Когда установлено значение false, эта переменная говорит git создать дополнительный коммит слияния в таком случае (эквивалентно --no-ff вариант из командной строки). Если установлено только, допускаются только такие ускоренные слияния (эквивалентно --ff-only вариант из командной строки).

Читая ветку ответов, я использовал следующие два варианта

git config --global pull.ff only # Disallows non ff merges on pull. Overrides merge.ff when pulling
git config --global merge.ff false # even create extra merge commit when fast forward merge would be possible

Только слабо связанный Я также обнаружил, что этот параметр позволяет избежать проблем во время тяги

git config --global pull.rebase # set up pull to rebase instead of merge
      git config --replace-all pull.ff false

Приведенная выше команда помогла мне удалить быстрое слияние из всех ветвей.

Эти ответы не сработали для меня, пока я не применил конфигурацию не только к глобальной:

      git config --global pull.ff only
git config pull.ff only

в локальной моей конфигурации pull.ff былfalse(вместоonly)

Ну эй, это работает, 10 лет спустя :D

      git config --merge.ff no
Другие вопросы по тегам