34
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Qiita株式会社Advent Calendar 2022

Day 1

これを知っていればコミット整理が楽になる

Last updated at Posted at 2022-11-30

これは何

私は開発作業をしているとき、一旦手を動かすことを優先することが多く、1つ1つのコミットの修正範囲が大きくなってしまうことが多いです。
コミットログを想像しながら開発ができればいいのですが、やはり書いてみないとわからないことも多いので、、、

そんな時に、後からでもコミットログを整理整頓しやすい tig というツールがあります!

細かい使い方はいっぱいありますが、覚えることが多すぎると結局使わなくなってしまうので、これだけ知っておけば、コミット整理が楽になるという部分にだけフォーカスして紹介します。

tigのインストール

そこまで難しくはないと思うので、こちらを参考に行なってください。
https://github.com/jonas/tig/blob/master/INSTALL.adoc

Macであれば、Homebrewからインストールできます。

$ brew install tig

tigの基本的な見方

ターミナルで下記のコマンド tigを入力すると main view が開きます。

$ tig

main viewの中で、それぞれの履歴にフォーカスしてEnterを押すことで、変更差分を見ることができます。
カーソルの移動は、左の画面では / 右の画面では k/j を使います。

画面を抜けたい時は、q を押します。
dを押すことで履歴画面を全画面にもできます。

スクリーンショット 2022-11-22 11.30.59.png

tigの便利なところ

コミット整理を行う上で難しいのが、同じファイル内で複数の修正を行ない、それぞれを別のコミットにする場合です。
ファイルが別々であれば、git add ファイル名 で今から作りたいコミットに含めたいものだけstageに追加すれば良いですが、同一ファイル内だと途端に困ってしまうことないですか?

それではやっていきましょう!

status view を開く

main viewが表示されている状態で、sを押すと git status を実行したような画面になり、まだコミットされていないファイルのリストが表示されます。
スクリーンショット 2022-11-22 12.08.21.png

  • Changes to be committed:
    • stageにのっている変更(コミット対象になる変更)
  • Changes not staged for commit:
    • まだstageにのっていない修正
  • Untracked files:
    • まだstageにのっていない新規ファイル追加

ファイル単位でstageに載せる

status viewを開いた状態で、 stageに載せたいファイルにカーソルを合わせて、uを押すだけ。
これで、ファイルごとstageに登録されます。

スクリーンショット 2022-11-22 12.08.33.png

部分ごとにstageに載せる

status viewを開いた状態で、 **Changes not staged for commit:**の中にあるファイルにカーソルを合わせて、Enterを押します。
修正履歴が表示されるので、@@ ~ @@ の範囲内でuを押すと、そのまとまりがstageに登録されます。

スクリーンショット 2022-11-22 12.12.19.png
※新規追加ファイルは対象外

1行ごとにstageに載せる

status viewを開いた状態で、 **Changes not staged for commit:**の中にあるファイルにカーソルを合わせて、Enterを押します。
修正履歴が表示されるので、stageに追加したい部分にカーソルを合わせて1を押すと、その行がstageに登録されます。
スクリーンショット 2022-11-22 12.17.53.png
※新規追加ファイルは対象外

stageから外す

status viewを開いた状態で、 Changes to be committed:: の中にあるファイルに対して、追加の手順と同様のことを行えば、ファイル単位/部分単位/行単位でstageから外すことも可能です。

最後に

基本的にはgitだけでもなんとでもできますが、コミット整理の際には、特にtigが直感的でわかりやすいので、私はコミット整理の際にだけtigの力を借りています。
本記事では特にtigの便利な使い方だけにフォーカスして、なるべく覚えることが少なくなるように意識したので、多くの方に使っていただけると嬉しいです。

また、コミット整理系の記事に関して、git commit --fixup が便利 も書いているので、ぜひご覧ください。

34
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?