2011-02-06 2700 views
31

我在Ubuntu 10.10 amd64上使用git 1.7.1,我試圖提取我的倉庫HEAD的哈希以便在我編譯到我的項目中的自動版本信息中使用它。git描述失敗與「致命:沒有發現名稱,無法描述任何東西。」

在過去,這一直使用

git describe --tags 

不過工作,Git是現在拋出

fatal: No names found, cannot describe anything. 

我。有人知道這意味着什麼嗎?

谷歌只顯示幾個點擊,沒有解決方案。

+1

「我試圖提取我的倉庫頭」不解析。 – nes1983 2011-02-06 22:16:30

+0

@nes:OP可能意味着哈希。 – Cascabel 2011-02-06 22:17:28

+0

你實際上只想要散列,還是說git描述的信息對你有用?最近的標籤和中間提交的數量比SHA1更具人類可讀性。 @nes:你可能想要取消刪除你的答案,因爲它可能正是OP所需要的 - 很難說。 – Cascabel 2011-02-06 22:27:56

回答

33

如果您想要id爲HEAD那麼您不需要describe,那麼您應該只使用rev-parse

git rev-parse HEAD 

如果你想要一個縮寫哈希,你可以使用--short

git rev-parse --short HEAD 

如果你想要一個「描述」回落到一個簡短的哈希如果不能找到合適的標籤,你可以使用--always

git describe --always 
27

這聽起來像你希望git-describe包括因爲該標籤最近的標記和提交的數量。但是,fatal: No names found消息意味着您的在您的存儲庫中沒有任何標籤。您需要在提交歷史記錄中至少有一個標籤,以便git describe告訴您最新的標籤。

只是猜測,但也許你在別處標記了一個提交,但從來沒有推動標籤上游(也許你推上提交,後來標記,並沒有重新排列?)。現在你的上游新克隆給你這個錯誤(因爲它沒有任何標籤)。如果是這種情況,您可以從包含所需標記的存儲庫中嘗試git push --tags(其中git describe正在按照您的預期行事)。然後在沒有標籤的存儲庫上執行git pull

-2

此命令幫助我:混帳取-t

7

我已經在CI工具正在執行庫的淺克隆一個CI構建環境有這個問題。這是令人沮喪的,因爲在我的開發環境,命令

git describe --tags 

會給我像輸出

2.2.12-7-g8ec9d6c9 

而構建環境中我會得到錯誤的「發現致命的沒有名字」。如果我嘗試使用--always標籤

git describe --tags --always 

話,我會簡單地得到最新的散列提交,但不是最近的標籤之前提交

8ec9d6c9 

執行在一個git pull構建環境將無濟於事,因爲一旦repo被克隆得淺,未來的pulls將不會更新標籤。

的解決方案是確保在構建環境回購的初始克隆不是淺克隆(即git clone命令不與--depth--shallow-since--shallow-exclude參數使用)。