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

标签 git version-control merge rebase

我想保留 merge 分支的分支信息,所以设置了branch.master.mergeoptions=--no-ff 。这样,即使可以快进,也始终会生成 merge 提交。

然而,一个副作用是,在执行 git pull 时会创建 merge 提交。 (更具体地说:在 IntelliJ 或 Eclipse 中更新)。防止日志充满Merge remote-tracking branch 'origin/master' ,我还设置了branch.master.rebase=true这将快进 masterorigin/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

时自动保留 merge 提交

关于git - 如何在使用 git pull --rebase 时自动保留 merge 提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43758066/

相关文章:

python - 如何合并两个具有相同元素的字典(键 :val)

svn - 使用 Git fork SVN 项目的最佳方式

git - Github for Mac 如何同步?

git - 如何为特定提交获取 "git log"补丁

克隆远程 Git 仓库时的 git-upload-pack : command not found,

svn - git svn clone 除了一个特定的文件夹

R基于多列聚合然后合并到数据框?

git - 如何告诉 'git' 到 'forget' 所有先前的提交?

git - 在 git 子模块中显示未推送的提交

linux - 错误 : RPC failed; curl 56 OpenSSL SSL_read: error:140943FC:SSL routines:ssl3_read_bytes:sslv3 alert bad record mac, 错误号 0