2016-10-07 45 views
2

我使用git顯示檢索文件內容在Github託管的elasticsearch的特定版本。這是我的git命令,我在項目的根目錄下運行:git在一個特定的文件返回'致命的:壞的對象'

git show 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1:rest-spec 

不過,我收到以下錯誤:

fatal: bad object 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1:rest-spec 

其餘規格的版本存在63cbc8439357f496ce630c2eb35b2cf02342fa4b〜1因爲它在下一次修訂中被更改。你可以看到下一版本here在Github上的變化,我跟我的本地克隆用下面的命令驗證它:

git show 63cbc8439357f496ce630c2eb35b2cf02342fa4b 

這是上面的git顯示輸出(I只包括其餘規格的變化):

diff --git a/rest-spec b/rest-spec 
deleted file mode 160000 
index b3ab724..0000000 
--- a/rest-spec 
+++ /dev/null 
@@ -1 +0,0 @@ 
-Subproject commit b3ab72486fae1b5c5a5397356a3e113bf72eb6d5 

非常感謝您的幫助!

回答

2

這是因爲rest-specelasticsearch存儲庫的子模塊,因此不屬於(直接存儲在)該存儲庫中的對象。查看tree of the 63cbc8439357f496ce630c2eb35b2cf02342fa4b~1 revision以確保rest-spec與其他對象不同。它通過.gitmodules文件記錄在elasticsearch存儲庫中,並且引用的存儲庫elasticsearch-rest-api-spec的內容通過git submodule命令作爲超級項目工作樹(即elasticsearch存儲庫)中的子目錄提供。欲瞭解更多詳情,請參閱Submodules chapter in the Git Bookdocumentation of the git submodule command

+0

謝謝你的回答。 我用'diff --ignore-submodules'來過濾子模塊,並且它沒有出現在結果中。我們如何才能找出一個文件是子模塊?我們如何看到子模塊文件的內容? –

+0

我遇到了另一個錯誤。如果您能幫助我解決@Leon問題,我將不勝感激。在提交** e7e1667a26de5472e3419c586682b92c37c6e7d3 **中,'diff --ignore-submodules'不會過濾子模塊,** rest-spec **出現在'git diff'中。你知道我怎麼可以在'git diff'中過濾子模塊**? 謝謝 –

+0

@MohsenLaali我的信息來源是官方文檔。它表明'git diff --ignore-submodules = all'應該忽略子模塊中的所有變化,但是它也聲明'git diff --ignore-submodules'(沒有任何明確指定的模式)默認爲'--ignore-submodules = all'。然而,提交** e7e1667a26de5472e3419c586682b92c37c6e7d3 **的情況是,該提交中的rest-spec **不是子模塊,而是存儲庫(類型爲符號鏈接)的實際對象。這就是它出現在差異中的原因。 – Leon

相關問題