![](/img/trans.png)
[英]What does `git checkout [<tree-ish>] [--] <pathspec>` when `<tree-ish>` is not given do?
[英]Why does `git diff-tree <tree-ish>` not print a result when applied to the very first commit?
我通常使用git diff-tree <tree-ish>
和這些選項: --no-commit-id --name-status -r
或--no-commit-id --name-only -r
列出添加和在特定提交中更改的文件。
我今天剛剛注意到,此命令在應用於第一次提交時不會打印結果..
那么為什么,以及如何克服呢?
原因可能是因為文檔指出:
當給出兩棵樹時,它將第一棵樹與第二棵樹進行比較。 當給出單個提交時,它將提交與其父級進行比較。
存儲庫中的第一個提交沒有父級。
但是,您可以為該提交指定--root
:
- 根
當指定 --root 時,初始提交將顯示為一個大的創建事件。 這相當於針對 NULL 樹的差異。
請注意,如果您正在構建輸出這些內容的某種腳本或應用程序,您將必須檢測它是第一次提交,因為在其他地方添加--root
將不是您想要的。
因此,雖然這不會產生 output:
git diff-tree -r HASH-OF-FIRST-COMMIT
這應該將第一次提交與空樹進行比較:
git diff-tree -r --root HASH-OF-FIRST-COMMIT
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.