Как автоматически сохранить коммиты слияния при использовании git pull --rebase?

Я хочу сохранить информацию об объединенных ветвях, поэтому я настроил 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 на своем мастере, он сохранит мои коммиты слияния, даже если я не обновил свой мастер перед слиянием?


person Auric    schedule 03.05.2017    source источник
comment
Я на самом деле не понимаю вас, но почему бы просто не сделать все из командной строки, возможно, используя сценарий, где у вас больше контроля?   -  person Tim Biegeleisen    schedule 03.05.2017
comment
Не все в компании настолько опытны и сходят с ума по использованию командной строки. Вот почему мне нужен способ заставить эти вещи работать с помощью обновлений Eclipse или IntelliJ по умолчанию, в которых у вас есть ограниченный контроль или нет контроля.   -  person Auric    schedule 03.05.2017


Ответы (1)


Параметр branch.master.rebase=true фактически переопределяет параметр pull.rebase=preserve по умолчанию.

Решение состоит в том, чтобы выполнить команду git config branch.master.rebase merges, чтобы настройка конфигурации теперь была branch.master.rebase=merges. Это автоматически сохранит коммиты слияния при выполнении git pull

person Auric    schedule 03.05.2017