2011-02-06 17 views
31

私はUbuntu 10.10 amd64でgit 1.7.1を使用しています。私は自分のプロジェクトにコンパイルした自動バージョン情報でそれを使用するために私のリポジトリのHEADのハッシュを抽出しようとしています。過去にはgit describeは「致命的:名前が見つかりませんでした。何も記述できません」というエラーが表示されます。

、これは常に

git describe --tags 

を使用して働いていたが、Gitは今私に

fatal: No names found, cannot describe anything. 

を投げています。誰かがそれが意味するものを手がかりにしていますか?

Googleはヒット数が少なく、解決策もありませんでした。

+1

"私のリポジトリの所在を抽出しようとしています"というメッセージは解析されません。 – nes1983

+0

@nes:OPはおそらくハッシュを意味します。 – Cascabel

+0

あなたは実際にハッシュだけを望んでいるのですか?gitによって説明されている情報は役に立ちますか?最新のタグと中間コミットの数は、SHA1よりはるかに人間が読める形式です。あなたが答えを元に戻すことを望むかもしれません。なぜなら、それは正確にOPに必要なものかもしれないからです。 – Cascabel

答えて

33

HEADのIDが必要な場合は、describeが不要です。rev-parseを使用してください。

git rev-parse HEAD 

を使用できます。あなたはそれが任意の適切なタグを見つけることができない場合は省略ハッシュにフォールバックするために、「説明」したい場合

git rev-parse --short HEAD 

、あなたは--alwaysを使用することができます。

git describe --always 
+0

ええ、それはハッシュを返しますが、私が本当に望むのは、通常8文字程度のgit-describeで返される短縮ハッシュです。 – Philipp

+1

@Philipp: 'git describe'通常、タグ名、コミット数、およびハッシュに基づくサフィックスからなるタグオブジェクトベースの文字列を返します。それは通常、省略されたハッシュを返さないので、私はあなたの求めるものがよく分からない。 –

27

あなたがgit-describeを期待しているように、そのタグからのコミットの最新タグや番号を含めるように聞こえます。ただし、fatal: No names foundというメッセージは、にはリポジトリにタグがないことを示しています。 git describeに最新のタグを通知するには、コミット履歴に少なくとも1つのタグが必要です。

ちょうど推測ですが、他の場所にコミットタグを付けたことがあります。タグをアップストリームにプッシュしたことはありません(アップストリームのコミットをプッシュし、後でタグ付けして再発行しなかったのでしょうか?あなたのアップストリームの新しいクローンがあなたにこのエラーを与えています(タグがないので)。その場合、git push --tagsを希望のタグがあるリポジトリから試してみることができます(git describeは期待通りの動作をしています)。次に、タグを持たないリポジトリにgit pullを実行します。

-2

このコマンドは、私を助け:Gitは

+8

詳細を編集してください。検索専用のコンテンツが含まれていないため、コードのみと「試してください」の回答は推奨されません(http://meta.stackexchange.com/questions/196187/is-try-this-bad-practice)。誰かが "これを試してみる"べき理由を説明してください。 –

7

-tフェッチ私はCIツールは、リポジトリのシャローコピーを実行していたCIビルド環境でこの問題がありました。ビルド環境では、私はエラー「が見つかり致命的な何名」を取得しないだろう、一方、私の開発環境では、コマンド

git describe --tags 

は私に

2.2.12-7-g8ec9d6c9 

のような出力を与えることになるので、これは、イライラさせられました。私は--alwaysタグに

git describe --tags --always 

を使用してみましたならば、私は単純に、最新のハッシュコミットになるだろうが、その前に最も最近のタグがでgit pullを実行

8ec9d6c9 

をコミットしていませんリポジトリが浅くクローン化されると、将来のプルはタグを更新しないため、ビルド環境は役に立たないでしょう。

溶液は、ビルド環境におけるレポの最初のクローン(すなわちgit cloneコマンドは--depth--shallow-since又は--shallow-excludeパラメータで使用されなかった)浅いクローンはなかったことを確認することでした。

+0

私はまったく同じ問題を抱えていました。あなたの洞察に感謝します! – Terenoth

関連する問題