我通常使用git diff-tree <tree-ish>
这些选项:
--no-commit-id --name-status -r
或--no-commit-id --name-only -r
列出特定提交中添加和更改的文件。
我今天刚刚注意到,此命令在应用于第一次提交时不会打印结果!。
那么为什么,以及如何克服呢?
我通常使用git diff-tree <tree-ish>
这些选项:
--no-commit-id --name-status -r
或--no-commit-id --name-only -r
列出特定提交中添加和更改的文件。
我今天刚刚注意到,此命令在应用于第一次提交时不会打印结果!。
那么为什么,以及如何克服呢?
原因可能是因为文档指出:
当给出两棵树时,它将第一棵树与第二棵树进行比较。当给出单个提交时,它将提交与其父级进行比较。
存储库中的第一个提交没有父级。
但是,您可以--root
为该提交指定:
--root
当指定 --root 时,初始提交将显示为一个大的创建事件。这相当于针对 NULL 树的差异。
请注意,如果您正在构建某种输出这些内容的脚本或应用程序,您将必须检测到它是第一次提交,因为--root
在其他地方添加不会是您想要的。
因此,虽然这不会产生任何输出:
git diff-tree -r HASH-OF-FIRST-COMMIT
这应该将第一次提交与空树进行比较:
git diff-tree -r --root HASH-OF-FIRST-COMMIT