我想保留合并分支的分支信息,所以我设置了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
时,即使我在合并之前没有更新主节点,它也会保留我的合并提交呢?
设置branch.master.rebase=true
实际上是覆盖默认pull.rebase=preserve
。
解决方案是执行命令git config branch.master.rebase merges
以便现在branch.master.rebase=merges
配置设置。这将在执行git pull
时自动保留合并提交