如何在使用 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
时自动保留合并提交
我想保留合并分支的分支信息,所以设置了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