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

How to preserve merge commits automatically while using 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

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

那么我如何确保当我在我的 master 上执行 git pull 时,它会保留我的合并提交,即使我在合并之前没有更新我的 master?

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

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

时自动保留合并提交