asoview! TECH BLOG

アソビュー株式会社のテックブログ

今更ですがtig使いはじめました

f:id:satomsatom:20220406143806j:plain

アソビュー Advent Calendar 2020の11日目です。

今更ですがtigを使うようになりました。
これをみてひとりでもtigを使うようになっていただけれたらいいなと思います。今更ですが。

対象の方

git commandをそのまま使っている方。
ちょっと前の私 です。

今回試してみること

  1. commitがカンタンきれいに
  2. cherry-pickがカンタンに

前提知識

tigとは

Tig is an ncurses-based text-mode interface for git. It functions mainly as a Git repository browser, but can also assist in staging changes for commit at chunk level and act as a pager for output from various Git commands.

とのことです。

インストールはこちらから。

複数の表示モードがあります

表示モードがたくさんあります。
今回使うモードは以下の3つです。

main view

コミットログみるやつ

diff view

diffみるやつ

status view

ファイルのthree stagesを確認するやつ

基本操作

main viewを開きそこからstatus viewやdiff viewを開きますが、

$ tig

でmain viewが表示されます。

main viewを開いたあとにsでstatus viewが開きます。
特定のファイルやコミットを選択した状態でdでdiff viewが開きます。
mでmain viewに戻れます。

また、status viewを開いて対象ファイルにカーソルをあわせた状態でエンターを押すと画面が分割され、対象ファイルのdiffを確認することもできます。

画面上にstatus view、画面下に選択したファイルのdiff view

ここまででいったん実際に3つのviewを縦横無尽に移動できるまでさわってみましょー。

今回試してみることを試します

commitがカンタンきれいに

status viewを開いてコミットしたいファイルを選択してuでコミット対象となります。コミット対象のファイルを選択してuでコミット対象から除外することもできます。

status viewを開いてcommitしたいファイルを選択してu(update)
コミット対象にファイルが移動します。

あとはCでコミットです。カンタン😊。

基本はこれだけですが、コミット対象のファイルの中から一部だけコミット対象外にできたりします。

status viewでコミット対象のファイルを選択してdiff viewも開き(基本操作参照)、ファイルのなかでコミットしたくない行にカーソルをあわせて1。

status viewとファイルを選択しdiff viewを開き、コミットしたくない行にカーソル移動。今回は追加行のテキストghiを対象外にします。
1で選択した行だけコミット対象から除外。今回は追加行のテキストghiが除外され、status viewでも対象ファイルがステージにあがったものとあがってないものに分かれていることが確認できます。

これで余分な修正は除外してきれいなコミットができます。きれい✨。

カンタン😊きれい✨やったね。

cherry-pickがカンタンに

main viewでコミットを選択してcherry-pickできます。

以下のようなコミットログ(masterとbranch_test)

masterブランチにbranch_testのコミット(今回はadd c.txt)をピックしてみます。
事前にmasterブランチに移動した状態で、

$tig branch_test

branch_testのmain viewが表示されるのでピックしたいコミット(add c.txt)を選択して C。画面下にcherry-pickを実行するかと出るのでyで実行。

branch_testの最新のコミットを選択してC。画面下にcherry-pick実行するかしないか[Yy/Nn]と出るのでyで実行。

main viewでmasterブランチのログを確認すると無事branch_testのコミット(add c.txt)をピックできました。

カンタン😊。

gitコマンドを使っている方いちどぜひ。 
以上です。今更ですが!

 

www.wantedly.com