是否可以在gitconfig中添加--preserve-merges

nkoocmlb  于 2023-05-21  发布在  Git
关注(0)|答案(2)|浏览(98)

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

cwxwcias

cwxwcias1#

简短的回答是“不”;中等长度的答案是“有点”;最后的答案是“你可能不想这么做”:—)
答案很简单,因为git rebase实际上没有配置条目来自动设置preserve-merges模式。
答案是“某种程度上”,因为git pull * 可以 * 配置为自动运行git rebase --preserve-merges。请记住,git pull本质上只是一对命令git fetch && git *something*,其中 * something * 部分是可配置的:mergerebase,如果是rebase,则使用什么标志。但这只会影响git pull运行的rebase命令,而不会影响您自己运行的命令。
详细的答案更加复杂。虽然在变基时保留合并可能比丢弃合并更上级,至少在一些方面,但事实是变基不能保留合并。一旦一些提交被复制到新的提交中,它唯一能做的就是 * 重新执行它们 *。这可能具有新的和/或不同的合并冲突,相对于上次完成合并。您还应该密切注意the git rebase documentation中对合并保留的限制。
在我看来,大多数提交图子集“应该”被重新定基,很少有任何内部合并。如果这样一个图子集有一个 final merge,你可以在换基之前简单地去掉那个merge(用git reset),然后在最后手动重新做那个merge。(事实上,git rebase通常会完全丢弃合并提交,因此在某些情况下您不必运行git reset本身。你必须运行它的一个地方是当合并到你打算变基的分支中时。这就是当git pull使用git rebase -p时,它实际上做了正确的事情,除了它没有检查和警告内部合并,这是一种警告信号,表明重基可能不是一个好主意。

0yycz8jy

0yycz8jy2#

配置变量rebase.rebaseMerges将包含在下一个版本的Git(2.41.0)中。它允许您始终使用--rebase-merges

历史/上下文

  1. 1.5.3:git-rebase(1)学习--preserve-merges,同时学习--interactive
  2. 2.22:git-rebase(1)学习--rebase-merges--preserve-merges被弃用
  3. 2.34:git-rebase(1)unlearns --preserve-merges(read:现在你得到一个致命的错误,如果你尝试使用它)
  4. 2.41.0-rc0:git-config(1)(我猜?)学习rebase.rebaseMerges

相关问题