git rev-parseの説明にあるPick out and massage parametersのmassageとは何か

Gitのバージョン

$ git --version
git version 2.21.0

git rev-parse --show-toplevelを実行すると、Gitで管理しているrootのpathを知ることができます。

rails new check_rev-parse-dirでRailsプロジェクト作成してgit rev-parse --show-toplevelの動作確認をすると以下のようになります。

$ pwd
check_rev-parse-dir
$ tree -L 1 
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── app
├── bin
├── config
├── config.ru
├── db
├── lib
├── log
├── package.json
├── public
├── test
├── tmp
└── vendor
$ cd app
$ pwd
> check_rev-parse-dir/app
$ git rev-parse --show-toplevel
> check_rev-parse-dir

git rev-parse --helpで他に便利なオプションはないかと調べると以下のような説明がありました。

NAME
       git-rev-parse - Pick out and massage parameters

情報工学やそれに付随する技術を説明する際に、massageという単語を見たことがありませんでした。 もしかして、messageの誤植ではないかと調べてみるとWhat does git rev-parse do?という質問がありました。

質問の回答に以下のような一文があります。

Massage just implies that it is possible to convert the info from one form into another

なんとなく、概要が掴めたのでmassageという単語について調べてました。

英単語を日本語で理解するのに苦手意識があるので、ロングマン現代英英辞典を利用します。

単語の意味を調べる時に重要なのは「品詞と、どのような文脈で利用されているか」なのでもう一度説明文を見てみましょう。Pick outmassageは、andによって並列の関係になっていることから動詞であることがわかります。

NAME
       git-rev-parse - Pick out and massage parameters

ロングマン現代英英辞典によると動詞massageは、3つの意味があることがわかります。文脈から今回は、二つ目の意味が合致していそうです。

  1. to press and rub someone’s body with your hands, to help them relax or to reduce pain in their muscles

  2. to change official numbers or information in order to make them seem better than they are – used to show disapproval.(類似語 cook the books)

  3. massage somebody’s ego

massageというのは、情報を利用しやすいように隠蔽してくれるということがわかりました。

これは、massage parametersに当てはめてもしっくりきます。

以上のことから、git rev-parseはGitリポジトリのメタ情報を得るためのコマンドであることがわかりました。別のGitコマンドの引数や関数化する時に利用することができそうです。

massageに対しての疑問が払拭されたので、便利なコマンドを紹介します。

コマンド集

現在のbranch名を取得

git rev-parse --abbrev-ref HEAD

HEADのハッシュを取得

git rev-parse HEAD

ショートバージョン

git rev-parse --short HEAD

.gitディレクトリの絶対パスを取得

git rev-parse --git-dir

全てのブランチ、tag、リモートブランチをハッシュで取得

git rev-parse --branches

git rev-parse --tags

git rev-parse --remotes

全てのリモートブランチを名前で取得

git rev-parse --abbrev-ref --remotes

まとめ

  • 自作shellコマンドでGitを操作するときに、git rev-parseを覚えているよい

参考文献

git-scm.com

Pro Git (English Edition)

Pro Git (English Edition)