我想保留 merge 分支的分支信息,所以设置了branch.master.mergeoptions=--no-ff
。这样,即使可以快进,也始终会生成 merge 提交。
然而,一个副作用是,在执行 git pull
时会创建 merge 提交。 (更具体地说:在 IntelliJ 或 Eclipse 中更新)。防止日志充满Merge remote-tracking branch 'origin/master'
,我还设置了branch.master.rebase=true
这将快进 master
至origin/master
pull 它时。
此设置还有另一个副作用:当我将分支 merge 到 master
时之后我git pull
因为我忘记在 merge 之前这样做,所以我的分支信息丢失了:功能分支在 master
中被展平。 .
命令git pull --rebase=preserve
正是我所需要的:它将 rebase master
,然后再次应用分支的 merge 。但我需要自动完成此操作,因为大多数命令是由 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
时,我如何才能确保这一点?在我的主控上,即使我在 merge 之前没有更新我的主控,它也会保留我的 merge 提交?
最佳答案
设置branch.master.rebase=true
实际上覆盖了默认的pull.rebase=preserve
。
解决办法是执行命令
git config Branch.master.rebase merge
因此配置设置现在为branch.master.rebase=merges
。这将在执行 git pull
关于git - 如何在使用 git pull --rebase 时自动保留 merge 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43758066/