我想保留合并分支的分支信息,因此我设置了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
时,即使我在合并之前没有更新我的主人,它也会保留我的合并提交?
答案 0 :(得分:2)
设置branch.master.rebase=true
实际上覆盖了默认pull.rebase=preserve
。
解决方案是执行命令
git config branch.master.rebase preserve
这样配置设置现在是branch.master.rebase=preserve
。这将在执行git pull