コミットの指定方法

既にコミットの指定方法をいくつか紹介してきました:

他にもたくさんあります;リビジョンの呼び方の完全なリストは git-rev-parse(1) の man ページにある "SPECIFYING REVISIONS" の節で 確認できます。

$ git show fb47ddb2 # オブジェクト名の先頭の数文字は
                    # そのコミットを特定するのに通常は十分です。
$ git show HEAD^    # HEAD コミットの親
$ git show HEAD^^   # 祖父母
$ git show HEAD~4   # 祖父母の祖父母

マージコミットは1つ以上の親を持ちます;デフォルトでは ^ と ~ はコミットリストの1つ目の親を指しますが、 次のように指定することもできます;

$ git show HEAD^1   # HEAD の1つ目の親
$ git show HEAD^2   # HEAD の2つ目の親

HEAD の他にも、コミットを指す特殊な名前があります:

(後に説明する)マージは、git reset のような操作と同じように、 現在チェックアウトしているコミットを変更し、 一般的には ORIG_HEAD に現在の操作以前にもっていた HEAD の値をセットします。

git fetch の操作は、常に最後にフェッチしたブランチのヘッドを FETCH_HEAD に 格納します。例えば、操作対象であるローカルブランチを指定せずに git fetch を 実行した場合、

$ git fetch git://example.com/proj.git theirbranch

フェッチされるコミットは FETCH_HEAD 取得されます。

マージについて議論するとき、MERGE_HEAD という特別な名前を目にします。 これは、現在のブランチにマージしようとしているもう一方のブランチを 参照しています。

git-rev-parse(1) コマンドは、低レベルのコマンドであり コミットに対する名前をコミットのオブジェクト名に変換するのに役立ちます。

$ git rev-parse origin
e05db0fd4f31dde7005f075a84f96b360d05984b