Я хочу сохранить информацию об объединенных ветвях, поэтому я настроил branch.master.mergeoptions=--no-ff
. Таким образом, фиксация слияния всегда генерируется, даже если ее можно перемотать вперед.
Однако побочным эффектом является то, что фиксация слияния создается при выполнении git pull
(точнее: обновления в IntelliJ или Eclipse). Чтобы журнал не заполнялся Merge remote-tracking branch 'origin/master'
, я также установил branch.master.rebase=true
, который будет перематывать master
на origin/master
при извлечении.
У этой настройки есть еще один побочный эффект: когда я объединяю ветвь с master
, а после этого я git pull
, потому что я забыл сделать это до слияния, информация о моей ветке теряется: ветвь функции сглаживается в master
.
Команда git pull --rebase=preserve
— это именно то, что мне нужно: она перебазирует master
, затем снова применит слияние ветки. Но мне нужно, чтобы это делалось автоматически, так как большинство этих команд выполняются Eclipse или Intellij. Я хочу, чтобы git pull
на самом деле исполнил git pull --rebase=preserve
Существует настройка конфигурации pull.rebase=preserve
, которая должна делать именно это, но даже после того, как я установил эту конфигурацию, git pull
будет выполнять только git pull --rebase
и не ожидаемый git pull --rebase=preserve
, хотя в настоящее время я использую git версии 2.12.2, которая, как ожидается, будет содержать эту функцию.
Итак, как я могу убедиться, что когда я делаю git pull
на своем мастере, он сохранит мои коммиты слияния, даже если я не обновил свой мастер перед слиянием?