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
自分が知ってるのはこれくらいです。
もっとあればコメントお願いします!