gpt4 book ai didi

git - 为什么 Git 子树不使用 rebase?

转载 作者:行者123 更新时间:2023-12-03 17:37:36 24 4
gpt4 key购买 nike

我使用 git subtree add 在我的项目中添加了另一个仓库,现在当我使用 git subtree pull --prefix=subtree-dir subtree-origin subtree-branch --squash 从子树项目更新我的主项目时, 我最终得到 两个我的主要历史中的新提交,前者表示“Squashed 'subtree-dir/' changes from 618c8ff..822004d”,后者是引用前者的 merge 提交。

这感觉很恶心。

我知道 Squash 提交是必要的(或者来自子树项目的所有干预提交),但是有什么方法可以避免第二次 merge 提交?我很想发现一个行为很像 git pull --rebase 的模式.

如果您今天还没有听说过,那您真是太棒了。

最佳答案

首先,你是对的...... Git 子树最多创建一个没有祖先的压缩提交(内容来自不同的远程/存储库)和一个常规的 merge 提交。

Git 子树不提供 --rebase选项。它不在 source code 中. Git 子树总是使用 git merge整合变化。具体来说,它使用 subtree merge strategy (这激发了子命令名称,我敢肯定)使子目录“魔术”和不相关的历史正常工作。

(更多关于“无关历史”的信息:https://stackoverflow.com/a/37938036/3619)

我不认为 rebase 理解子树 merge 策略,所以它只是一个不合适的集成更改的选择。

关于git - 为什么 Git 子树不使用 rebase?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22447376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com