为什么我不能git subree pull --rebase?

时间:2014-03-17 05:09:18

标签: git git-subtree

我已经使用git subtree add向我的项目添加了另一个回购,现在当我用git subtree pull --prefix=subtree-dir subtree-origin subtree-branch --squash从子树项目更新我的主项目时,我最终得到了两个我的主要历史记录中的新提交,前者表示" Squashed' subtree-dir /'从618c8ff..822004d"更改,后者是引用前者的合并提交。

这感觉很糟糕。

我理解压缩提交是必要的(或者是来自子树项目的所有干预提交),但有没有办法避免第二次合并提交?我很想发现一种行为与git pull --rebase非常相似的模式。

如果你今天没有听到它,你会很棒。

1 个答案:

答案 0 :(得分:0)

首先,您是对的... Git子树充其量只能创建一个没有祖先的压缩提交(内容来自不同的远程/存储库)和常规合并提交。

Git子树不提供--rebase选项。它不在source code中。 Git子树始终使用git merge来集成更改。具体来说,它使用subtree merge strategy(肯定可以激发子命令名称)来使子目录“魔术”和不相关的历史记录正常工作。

(有关“无关历史”的更多信息,请访问https://stackoverflow.com/a/37938036/3619

我不认为重订理解的子树合并策略,所以它只是一个集成的变化不恰当的选择。