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

cam*_*mer 6 git git-subtree

我已经为我的项目添加了另一个repo git subtree add,现在当我从子树项目更新我的主项目时git subtree pull --prefix=subtree-dir subtree-origin subtree-branch --squash,我最终在我的主历史中有两个新的提交,前者说"Squashed"子树 - dir /'从618c8ff..822004d更改",后者是引用前者的合并提交.

这感觉很糟糕.

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

万一你今天没有听过,你太棒了.

Ant*_*ean 1

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

Git 子树不提供--rebase选项。它不在源代码中。Git 子树总是用来git merge集成更改。具体来说,它使用子树合并策略(我确信这启发了子命令名称)来使子目录“神奇”和不相关的历史记录正常工作。

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

我认为 rebase 不理解子树合并策略,因此它对于集成更改来说是一个不合适的选择。