【その1】git をもう一歩使いこなす!便利なオプションを紹介!

gitは言わずと知れた超有名かつ便利なコマンドですが、有名なくせに奥が深すぎてなかなか完全に使いこなすのは難しいコマンドの1つです。

この記事ではそのgitをもう一歩使いこなすためのオプションを紹介します。

「普通にaddしてcommitしてpushする事はできるが、それ以外はあんまりわからない…」という方がさらにgitを使いこなせるようになると思います。

※この「普通にaddしてcommitしてpushする事」を紹介している記事は世の中に数多ありますので、ここではあまり触れない事とします。



「git tag」でタグを切る

git はコミットごとにコミットハッシュが自動で付与されます。しかしこれでははっきり言って人間にはどれがどういう意味を持つのかわかりません。

そこでgit にはタグという機能があります。意味をつけたいコミットを指定して「名前」をつける事ができます。使用方法は下記のようになります。

git tag [タグ名]

同じタグ名はそのリポジトリで1つしか存在できません。しかし同じコミットに複数のタグをつける事はできます。

タグを切る

具体的には下記のように使います。

git tag 1.0.0

コメント付きのタグをつける事もできます。

git tag -a [タグ名] -m [コメント]

上記のように何も指定しない場合、今HEADがある位置にタグが付けられますが、コミットハッシュを指定してタグを付ける事ができます。

git tag 1.0.1 96632032e41a360b040db710665770c8e02356d2

タグのプッシュはブランチのプッシュとは少し異なり、「–tags」オプションをつける必要があります。

git push [リモート名] --tags

タグを確認する

このリポジトリに付けられたタグを一覧表示して確認する事ができます。

git tag -l

タグにチェックアウトする

「git checkout」コマンドはブランチを移動する場合に使う基本的なコマンドですが、これを利用して、タグを付けたコミットに移動する事ができます。

タグ自体はコミットに紐付いていますのでタグにチェックアウトした場合、そのコミットまで移動する事になります。

git checkout [タグ名]

タグを削除する

「-d」をつけてタグ名を指定することでタグを削除することができます。タグを削除してもコミットしたファイルの内容などに影響はありません。

タグは特定のコミットに名前をつけるようなことなので、タグを削除したからと言ってコミットした情報が書き換わることはないのです。

git tag -d [タグ名]



「git describe」で直近のタグを探す

「git describe」コマンドを使って上記で紹介したタグを表示する事ができます。

今の自分のHEADがある位置から一番近いタグが表示されます。

git describe

ここで注意すべき事はタグを切った時に「コメント付きタグ」でないと表示されない事です。

普通に「git tag」コマンドでタグを切っていた場合下記のようなエラーが出てしまいます。

fatal: No annotated tags can describe '92958e487a95f7c427613e4df70112055372597f'.
However, there were unannotated tags: try --tags.

このエラー文に書いてあるように「–tags」オプションを付けるとコメント付き出ないタグも表示する事ができます。



「git diff」で変更した差分をみる

「git diff」コマンドを使うことで最後のコミットからの変更差分をみる事ができます。「git add」でHEADにステージされたファイルの変更差分を見る場合は「git diff –cached」とします。

git diff

ファイル名を指定してファイルごとの差分をみる事もできます。

git diff [ファイル名]

「git show」でコミットの詳細をみる

コミットを何度もするとその履歴がたまっていきます。「git log」コマンドでその履歴を見ることができますが何を変更されたのかはわかりません。

そんな時に使えるのが「git show」コマンドです。下記のようにすることで該当のコミットで一体何がどう変更されたのかを見ることができます。

git show [コミットハッシュ]
git show 96632032e41a360b040db710665770c8e02356d2

「git blame」で誰がコミットしたかをみる

「ここバグってやがる!誰が書いたプログラムだ!」となることもあるかと思います。(そういう犯人探しが行われない職場が理想的ですがw)

そんな時に用いるのが「git blame」コマンドです。使い方は下記の通りです。

git blame [ファイル名]

コミット履歴は嘘をつきません。「git blame」を使うとそのファイルのどの行がいつ誰によって変更されたのかがわかってしまいます。

下記の例でいくとこれでコミットハッシュ「92958e48」で変更されたのがわかります。さらにどう変更されたのかを調べたい場合、「git checkout 92958e48」などとしてその履歴に移動し、そこから「git diff」で変更差分を確認できます。

// git blame test.txt
92958e48 (コミットした人 2017-01-09 15:58:54 +0900 1) 9,ppp
92958e48 (コミットした人 2017-01-09 15:58:54 +0900 2) 10,ttt



まとめ

この記事ではgitの基本のさらにほんの少しだけ先の機能を紹介しました。ここに書いたコマンドを覚えるだけでも生産性が段違いだと思います。

奥が深すぎて1つ1つのコマンドを深ぼる余裕はないので、ぜひ自分の手で動かしてみてください。

追記

さらに深く知りたい方はこちらの記事もご覧ください。

【その2】git をさらにもう一歩使いこなす!使えると生産性がぐっと高まる!

2017.03.30
プログラミングは楽しい!人生だって変わるかも!

この記事が気に入ったら
いいね!しよう

ABOUTこの記事をかいた人

ぽんぽこ

ぽんぽこです。数年前、会社に通いながらも頑張ってプログラミングスクールで学びました。私が利用したのはCodeCamp(コードキャンプ)です。なんとプログラミングを覚えたらころころと人生が変わっていって、現在は 外資系4大IT企業 に転職できました。今でも毎日勉強の日々ですが、このサイトで少しでも役立つ情報を提供できたらと思っています。プログラミングって難しそうだな...と思ってもとりあえずやってみることが大事!行動しないと現状は変わらない!▶自己紹介はこちら
話題のプログラミングスクールを厳選比較(真っ先に検討したいスクール)

2018年 最新版!話題のプログラミングスクールを厳選比較!