2012-04-10 120 views
7

我正在尋找一種方式來輸出與ls-tree相同的方式,但我的工作目錄。每當我運行git ls-tree .它說fatal: Not a valid object name .git ls-tree輸出工作目錄?

+0

'git ls-files'可能帶有'-m'? – Mikel 2012-04-10 04:37:35

+1

git ls-tree -r HEAD – 2016-08-30 03:15:26

回答

14

git ls-tree只適用於git refs,例如, ls-tree HEAD

嘗試git ls-files。您可能需要-s和/或-m標誌。


正如你指出的,git ls-files -s將列出(已上演即文件)的索引文件。理論上,你可能會混淆索引,運行git ls-files -s,然後嘗試恢復它,例如,

git commit 
git add . 
git ls-files -s 
git reset . 
git reset --soft HEAD^ 

似乎是對的,並在一個簡單的測試中工作,但可以吃掉所有的文件。

+0

謝謝。我認爲,正確地說,我所問的是不可能的。原因是工作目錄中沒有文件的散列對象。然而,對於_index_,當然有散列對象,正如您通過建議'-s'標誌指出的那樣。這不完全相同的輸出,但我不想打擾其他git命令的功能。 :) – 2012-04-10 21:58:28

+0

看來'-m'沒有預期的效果,就像你暗示的那樣。我有一個清單工作目錄而不是索引。查看更新的答案。並在對真實數據進行測試之前進行測試。 :-) – Mikel 2012-04-11 01:56:56