Можно ли сделать так, чтобы ускоренная пересылка была отключена по умолчанию в git? - PullRequest
247 голосов
/ 23 марта 2010

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

Ответы [ 3 ]

325 голосов
/ 25 июля 2011

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

git config --add merge.ff false

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

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

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

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

263 голосов
/ 23 марта 2010

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

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

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

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

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

9 голосов
/ 23 января 2018

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

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
...