ペンギン村の住人、tobi462です。
今回はシェルスクリプトなどのプログラムからgitの情報を取得する際に、rev-parse
という便利なコマンドがあったので、その紹介と教訓について書いてみます。
Tl;Dr
$ git rev-parse --abbrev-ref HEAD master
冴えないやり方
実のところあとからググったらいくらでも記事があったのですが、最初は以下のように書いていました。
$ git branch | grep '*' | sed -e 's/* //'
まぁ、結果は同じになると思いますが、明らかに rev-parse
を使ったやり方のほうがスッキリしています。
rev-parse って?
与えられたものが何かを調べるコマンドらしく、なんだかいろいろ出来るようです。 Git - git-rev-parse Documentation
以下では HEAD
が指すコミットハッシュ値を取得しています。
$ git rev-parse HEAD 154cc76c53b6236247f0143272870447d336f4cf $ git rev-parse --short HEAD 154cc76
どうやら普段のGit操作というよりは、Gitの情報を取得したい時につかえるコマンドという印象です。
--abbrev-ref って?
オンラインマニュアルによれば、
A non-ambiguous short name of the objects name. The option core.warnAmbiguousRefs is used to select the strict abbreviation mode.
とのことで、 どうやら曖昧でない短い名前を返すようです。言い換えると取得された名前を使用して参照すれば、確実に1つのハッシュ値に限定できるということでしょう。
まとめ(あるいは教訓)
普段利用しているようなGitコマンド(e.g. branch
、status
)は人間向けのUIとしての側面を持っているので、プログラム的に何か扱いたい時はrev-parse
を使うのが良さそう、というのが今回の教訓でした。