Я действительно не могу вспомнить время, когда я использовал бы git merge
, а не git rebase
и не хочу, чтобы появился фиксаж. Есть ли способ настроить git для быстрой пересылки по умолчанию? Тот факт, что есть опция --ff
, по-видимому, подразумевает, что есть способ, но я не могу найти его в документации.Могу ли я сделать быструю переадресацию по умолчанию в git?
ответ
Да, есть --no-ff
. Вы можете настроить параметры слияния для каждой ветви, например.
git config branch.master.mergeoptions "--no-ff"
добавляет следующую строку в ваш $(REPO)/.git/config
файл:
[branch "master"]
mergeoptions = --no-ff
Сноска: если говорить о моем опыте, я в конце концов нашел быстрое переключение вперед выключен в основном полезно для GIT новичков - однако когда вы почувствуете, что процессы и концепции начинают погружаться в вас, вы определенно хотите избежать размытия вашего логарифма с помощью целых бессмысленных коммитов типа «объединенный удаленный ..blarf».
А, я полагаю, я искал не то место. Благодаря! –
Изучение git немного похоже на альпинизм; но вместо того, чтобы начинать с небольших скал и продвигаться к более жестким, git заставляет вас снова и снова подниматься на одну и ту же гору, только каждый раз падая на разных высотах, каждый раз так же удивлялся, что спасательный круг не был привязан. – conny
@conny - Я думаю, это моя новая любимая цитата о git! –
Кажется, что есть еще нерешенный вопрос в теме: Как это сделать глобально (т. Е. Для всех ветвей)? Для записей мы можем использовать следующее:
git config --add merge.ff false
..., чтобы оно применимо ко всем ветвям в текущем репозитории. Для того, чтобы сделать его применить ко всем ветвям в все хранилищами где кто-то не запустить его без опции --global
(локальные параметры переопределяют глобальные) запустить это:
git config --global --add merge.ff false
С documentation (поиск merge.ff) :
merge.ff
По умолчанию мерзавец не создает дополнительные слияния совершить при слиянии фиксации, что является потомком текущей фиксации. Вместо этого кончик текущей ветви быстро перенаправляется. Когда установлено значение false, эта переменная сообщает git создать дополнительное слияние в таком случае (что эквивалентно предоставлению опции--no-ff
из командной строки). Если установлено только значение, допускаются только такие быстрые слияния (эквивалентно предоставлению опции--ff-only
из командной строки).
Примечание:' merge.ff 'был введен в Git 1.7.6. Он не эффективен в более старых версиях. –
Для людей, использующих Git 1.7.6, это лучшее и самое простое решение. –
Я использую это вместе с псевдонимом 'puff =" pull -ff -ff-only "' – stigi
Чтение нити ответов я в конечном итоге, используя следующие два варианта
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] (http://nvie.com/posts/a-successful-git-branching-model/) – Steiny