如何在使用git pull --rebase时自动保留合并提交?

时间:2017-05-03 10:56:30

标签: git version-control merge 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

有一个config setting pull.rebase=preserve可以做到这一点,但即使在我设置此配置后,git pull只会git pull --rebase而不是预期的git pull --rebase=preserve,而我我目前正在使用git版本2.12.2,预计将包含该功能。

那么我怎样才能确保当我在我的主人身上做git pull时,即使我在合并之前没有更新我的主人,它也会保留我的合并提交?

1 个答案:

答案 0 :(得分:2)

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

解决方案是执行命令 git config branch.master.rebase preserve 这样配置设置现在是branch.master.rebase=preserve。这将在执行git pull

时自动保留合并提交