ペンギン村 Tech Blog

技術をこよなく愛するエンジニア集団が在住するペンギン村から、世界へ役立つ(かもしれない)技術情報を発信する技術系ブログです。某アラレちゃんが済む村とは一切関係ありません。んちゃ!

シェルスクリプトで現在のブランチ名を取得する(git rev-parse)

ペンギン村の住人、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. branchstatus)は人間向けのUIとしての側面を持っているので、プログラム的に何か扱いたい時はrev-parseを使うのが良さそう、というのが今回の教訓でした。