是否可以在gitconfig中放置--preserve-merges

时间:2016-07-08 14:25:20

标签: git git-rebase

我想设置至少一个我的存储库(如果设置是全局的,我很好),以便在我变基时始终保留分支。有没有办法在我的gitconfig中设置它?

1 个答案:

答案 0 :(得分:2)

简短的回答是“不”;中等答案是“有点”;而答案很长的是“你可能不想这样做”。 : - )

简短的回答非常简单,因为git rebase实际上没有配置条目可以自动设置保留合并模式。

“排序”答案是因为git pull 可以配置为自动运行git rebase --preserve-merges。请注意,git pull本质上只是一对命令git fetch && git something,其中 something 部分可配置:merge或{{1如果rebase,则使用哪个标志。但这只影响rebase运行的rebase命令,而不影响你自己运行的命令。

答案很长很复杂。虽然保留合并 可能通常优于(至少在几种方面)在重新定位时丢弃它们,但事实是rebase 不能保留它们。一旦某些提交被复制到新提交,它唯一能做的就是重新执行它们。与上次合并完成时相比,这可能会产生新的和/或不同的合并冲突。您还应该密切关注the git rebase documentation中对合并保留的限制。

在没有详细介绍的情况下,我总觉得大多数提交图形子集“应该”重新定位,很少有内部合并。如果这样的图形子集具有单个最终合并,您可以在重新定位之前简单地去除该合并(使用git pull),并在最后手动重新执行该单个合并。 (实际上,git reset通常会完全丢弃合并提交,因此在某些情况下您不必运行git rebase本身。您必须运行它的那个是合并进入你想要重新定义的分支。这是git reset在使用git pull时实际做正确的事情,除了它无法检查和警告内部合并,这是一种警告这种情况可能不是一个好主意。)

相关问题