2009-05-27 10 views
17

Gitでは、完全なSHAハッシュや短い形式のハッシュ(例えば、最初の6文字程度)を含む、コミットを参照する方法はたくさんあります。また、HEAD、HEAD ^、HEAD ^^、HEAD〜3などのような "フレンドリ"な構文を使って、コミットに名前を付けることもできます。Gitでは、任意のコミットの「フレンドリー」な名前を取得する方法はありますか?

SHAハッシュ形式の任意のコミットがある場合、Gitにはコミットに「フレンドリー」な名前を見つけるためのツールがありますか?

私がgit-show-branchを使用した場合、リビジョンのリストが「フレンドリー」なので、方法が必要なように感じます...私はそれを行うツールを見つけることができません。

+0

:http://stackoverflow.com/questions/3003554/is-there-any-way-to-get-theメッセージからのコミット – Benjol

答えて

17

"git name-rev"を使用すると、お探しのフォームを取得できます。そのフォームの1つの問題は、ブランチに関連して、永続的な名前ではないということです。したがって、代わりに、 "git describe"があります。これは、指定されたコミットがタグよりどれだけ先にあるかに基づいて、別のフレンドリーな名前を生成します。例えば

[email protected]:~/src/git <master>$ git name-rev 3cd7388 
3cd7388 master~2 

しかし、私は "gitのプル" を行った後、その後、マスター〜2が何かを意味するかもしれません。対照的に:

[email protected]:~/src/git <master>$ git describe 3cd7388 
v1.6.3.1-153-g3cd7388 

"v1.6.3.1-153-g3cd7388"は永続的な名前です。もちろん、少し長めです(例えば、 "--abbrev = 4"を指定することで最後にハッシュビットを短くすることもできます)が、バージョン1.6.3.1以降は3cd7388が153回変化することを伝えます。

+1

ありがとう、どちらのテクニックも便利です。私はgit-name-revの動作にもっと興味を持っていました。具体的な使用例は、特定のメッセージでコミットを見つけるためにgit-log --grepを使用していたためです。ハッシュを覚えておくことなく、git-revertのパラメータとして使用できます。 – mipadi

+2

その場合、 "--stdin"オプションをgit name-revに書き留めておきます。git log出力をそのままパイプに渡すことができるはずです。 – araqnid

+0

うわー。それ。そうです。驚くばかり。ありがとう! – mipadi

3

git describe試してみてください:

ちょうど完全ために、ここで逆質問です
$ git describe --all --contains 90de2680dc54c0d600b0694bd175bd09357a8dba 
master~2 
関連する問題