エンジニアはこわくない

好きなように書く

全てのgitブランチを取得したいならfor-each-refコマンドが使えるかも


スポンサーリンク

f:id:tsujitaku50:20170107105906p:plain

こんにちは、つじたく(@Tsuji_Taku50)です。

gitコマンドを使ってみてfor-each-refコマンドという存在をこの前初めて知って、たまにしか使わないけど

知っておけば便利だなと思ったので紹介したいと思います。

公式ドキュメント

公式ドキュメントは下記になります。

Git - git-for-each-ref Documentation

公式ドキュメントにはfor-each-refの説明として

「各refに関する情報を出力する」

と書かれています。

これを見ただけでは、「なんのこっちゃ」という感じなので実際に試してみましょう。

試してみる

今回は下記リポジトリで試してみました。

github.com


実際にコマンドを試してみます。

[~/.go/src/github.com/TsujiTakuya55/go-connpass-cli]
% git for-each-ref                                                                                                                                                                                                        (git)-[master]
b8c37e66c18ce31cb7017d394c76f860c3934991 commit refs/heads/master
b8c37e66c18ce31cb7017d394c76f860c3934991 commit refs/remotes/origin/HEAD
b8c37e66c18ce31cb7017d394c76f860c3934991 commit refs/remotes/origin/master

するとコンソールに表示されるものが確認できます。

ブランチ名と、そのブランチ上にある最新のコミットハッシュ値が表示されるようです。

つまりfor-each-refコマンドは「ブランチ名と、そのブランチ上にある最新のコミットハッシュ値が表示される」コマンドです。

ただ、これだけだとイマイチ使い所が見当たりません。

スクリプトなどに組み込む

調べたところ、for-each-refコマンドを単体で使うことは少なくスクリプトなどに組み込むことが多いようです。

for-each-refコマンドでは全てのブランチが表示されるので、「全てのブランチに対して何か処理をしたい」

という時に利用するようです。

例えば全てのブランチを取得したい場合は下記のようにできます。

for branch in $(git for-each-ref --format='%(refname:short)' refs/heads); do
echo $branch
done

変数branchにブランチ名が入ります。


もっと詳しく知りたい方は、こちらをどうぞ↓ 少しfor-each-refコマンドについて書かれています。 qiita.com

まとめ

全ブランチのブランチ名が取得したいなーと思って調べたらfor-each-refコマンドなんて便利なものがあったので

ちょっと感動しました。

スクリプトに組み込むと簡単にブランチ名が取得できました。

さすがGit!

おわり!!