1

我通常使用git diff-tree <tree-ish>这些选项: --no-commit-id --name-status -r--no-commit-id --name-only -r列出特定提交中添加和更改的文件。

我今天刚刚注意到,此命令在应用于第一次提交时不会打印结果!。

那么为什么,以及如何克服呢?

4

1 回答 1

1

原因可能是因为文档指出:

当给出两棵树时,它将第一棵树与第二棵树进行比较。当给出单个提交时,它将提交与其父级进行比较。

存储库中的第一个提交没有父级。

但是,您可以--root为该提交指定:

--root
当指定 --root 时,初始提交将显示为一个大的创建事件。这相当于针对 NULL 树的差异。

请注意,如果您正在构建某种输出这些内容的脚本或应用程序,您将必须检测到它是第一次提交,因为--root在其他地方添加不会是您想要的。

因此,虽然这不会产生任何输出:

git diff-tree -r HASH-OF-FIRST-COMMIT

这应该将第一次提交与空树进行比较:

git diff-tree -r --root HASH-OF-FIRST-COMMIT
于 2020-06-26T09:53:10.740 回答