我想设置至少一个我的存储库(如果设置是全局的我没问题)以便在我变基时始终保留分支。有没有办法在我的 gitconfig 中设置它?
简短的回答是“不”;中等长度的答案是“有点”;长答案是“你可能不想那样做”。 :-)
简短的回答很简单,因为实际上没有
git rebase
自动设置保留合并模式的配置条目。
“有点”的答案是因为
git pull
can被配置为自动运行git rebase --preserve-merges
。请记住,git pull
本质上只是一对命令 git fetch && git something
,其中 something
部分是可配置的:merge
或 rebase
,如果是 rebase
,要用什么标志使用。但这只会影响 git pull
运行的变基命令,而不影响您自己运行的命令。
长答案更复杂。虽然保留合并 可能通常优于,至少在某些方面,在变基时丢弃它们,但事实是变基 不能 保留它们。一旦一些提交被复制到新的提交,它唯一能做的就是重新执行它们。与上次完成合并相比,这可能有新的和/或不同的合并冲突。您还应该密切注意
git rebase
文档中对合并保存的限制。
在不深入细节的情况下,在我看来,大多数“应该”重新定位的提交图子集很少有任何internal合并。如果这样的图子集只有一个 final 合并,您可以在变基之前简单地剥离该合并(使用
git reset
),并在最后手动重新执行该单个合并。 (实际上,git rebase
通常会完全删除合并提交,因此在某些情况下您不必运行 git reset
本身。您必须运行它的地方是合并到您所在的分支时打算变基。这是git pull
在使用git rebase -p
时实际上做正确事情的地方,除了它没有检查内部合并并警告内部合并,这是一种警告信号,表明变基可能不是一个好的想法。)
配置变量
rebase.rebaseMerges
计划包含
在下一个版本的 Git (2.41.0) 中。它允许您始终使用
--rebase-merges
.
--preserve-merges
,同时
它学习--interactive
--rebase-merges
和 --preserve-merges
已弃用--preserve-merges
(阅读:现在你得到一个
如果你尝试使用它会出现致命错误)rebase.rebaseMerges