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 B
或 git diff-tree -p HEAD:B B/B
它应该向您表明这两棵树之间没有区别。
刚从 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 B
或 git diff-tree -p HEAD:B B/B
它应该向您表明这两棵树之间没有区别。