是否可以将 --preserve-merges 放入 gitconfig

问题描述 投票:0回答:2

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

git git-rebase
2个回答
4
投票

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

简短的回答很简单,因为实际上没有

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
时实际上做正确事情的地方,除了它没有检查内部合并并警告内部合并,这是一种警告信号,表明变基可能不是一个好的想法。)


0
投票

配置变量

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) 取消学习
    --preserve-merges
    (阅读:现在你得到一个 如果你尝试使用它会出现致命错误)
  4. 2.41.0-rc0:git-config(1)(我猜?)学习
    rebase.rebaseMerges
© www.soinside.com 2019 - 2024. All rights reserved.