git 差异树显示变更集已经合并

git diff-tree showing changedset already merged

刚从 git 子树开始。我关注了 the official beginners tutorial.

在存储库 A 的目录 A 中的工作副本中,我在存储库 B 的子目录 B 中添加了一个子树。我用来查看 B 的 master 的分支名称也是 B.

我在分支 B 中进行了提交并检查了 A 的主控,git diff-tree -p B 提供了与 B 中最后一次提交对应的差异.

然后我应用了以下命令:

git merge --squash -s subtree --no-commit B

并承诺。

我检查过合并进行得很顺利,但是之前的相同 diff-tree 命令仍然呈现与 B 中最后一次提交对应的相同差异,即使通过 [=24] 检查=] 和正常 git diff 我可以看到提交已应用于 master,我不知道为什么之前的 diff-tree 会持续存在。

为什么以及我做错了什么?

问题似乎是,根据 diff-tree 的帮助,它并没有 'do' 该示例声称它在做什么。如果在这种情况下你只提供一个 treeish B 那么它会将 tree-ish 与其父级进行比较。无论你将它合并多少次,那个父级都不会改变。我认为其中一些已经被掩盖了因为在你的例子和他们的例子中,他们的文件夹和分支都使用了相同的分支名称。

如果你改为说:
git diff-tree -p HEAD:B Bgit diff-tree -p HEAD:B B/B 它应该向您表明这两棵树之间没有区别。