如何在使用 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时,即使我在合并之前没有更新主节点,它也会保留我的合并提交呢?

设置branch.master.rebase=true实际上是覆盖默认pull.rebase=preserve

解决方案是执行命令git config branch.master.rebase merges以便现在branch.master.rebase=merges配置设置。这将在执行git pull时自动保留合并提交

最新更新