Posted at

git rev-parse でできること

More than 5 years have passed since last update.

git の記事などを見ていると、よく rev-parse というコマンドが出てきます。

rev-parse単体でググっても使い道がよくわからないので、メモ変わりにrev-parseでできることをここに書いてみます。

【参考】


git-rev-parse(1) Manual Page

https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html



使用可能なリファレンス(ref)を渡すとハッシュを返す


ハッシュ

$ git rev-parse 1838ad4786...02cc4e713a

>> 02cc4e713a10dc68bcba40919f0f23eb62b45ec4
>> 1838ad478661d8cdb544c9adf921d08a97f7cc91
>> ^02cc4e713a10dc68bcba40919f0f23eb62b45ec4


tag

$ git rev-parse v0.1.1

>> 4b7688eda62c07ec71f7a9576395861c252bd904


省略ハッシュ

$ git rev-parse 4b7688

>> 4b7688eda62c07ec71f7a9576395861c252bd904


gitリポジトリのディレクトリを返す

$ git rev-parse --git-dir

>> .git


現在のディレクトリにリポジトリがあるかどうかを確認

$ git rev-parse --is-inside-work-tree

>> true


リポジトリが共有リポジトリか確認

$ git rev-parse --is-bare-repository

>> false


トップレベルディレクトリを絶対パスで取得

$ git rev-parse --show-toplevel

>> /path/to/repository


サブディレクトリにいるときにトップレベルのディレクトリからの相対パスを出力

$ git rev-parse --show-cdup

>> path/


使用可能なすべてのリファレンスを出力

$ git rev-parse --all

>> d2c70a0299127fbfa3cb898cb0b1ffd1186a01b4
>> a8a66d65282a22ae93954a468121a66ffc6926a3
>> d8cf577b01c3b52b1d568cf32230cf3537c3a5f5
>> f55abf927a2300831bbffb877a6f6ae8bec701d6
>> 81732ec5d6040da5c1ad9b68022292c97d6d3198
>> 69249bdcb954bb851df9901ed6491119836c2c8d
>> 63c8ebd4f31a1d580b8068f44b547d8418002972
>> b771459c556b79442ef0c5a1569c74a173c9492b
>> 53d65668f327df193637c4150a45fab1eacd138f
>> 4b7688eda62c07ec71f7a9576395861c252bd904
>> d490a6e5c0862bcd49450d79ba81d6d01470c42a


ブランチ

$ git rev-parse --branches

>> d2c70a0299127fbfa3cb898cb0b1ffd1186a01b4


タグ

$ git rev-parse --tags

>> d8cf577b01c3b52b1d568cf32230cf3537c3a5f5
>> f55abf927a2300831bbffb877a6f6ae8bec701d6


リモート

$ git rev-parse --remotes

>> a8a66d65282a22ae93954a468121a66ffc6926a3

自分が知ってるのはこれくらいです。

もっとあればコメントお願いします!