Help us understand the problem. What is going on with this article?

[Git] 10分で使いはじめるTig(コミット操作を早くする)

More than 3 years have passed since last update.

はじめに

私は普段 Tig(てぃぐ)を使っているのですが、どうも Tig の知名度は意外と低いようです。そして噂に聞いて使い始めても、とっつきづらいなどの理由でやめちゃう人も多いようです。

しかし、最初の壁さえ乗り越えてしまえば、Tigは便利なGitツールとして自身のツールボックスに加えられると思います。

実際に私の経験として、同僚に10分くらいで Tig のインストールから基本操作をレクチャーをしたところ 「Tigめっちゃ便利や・・・!」 という感想を頂いたこともあります。

概要

本記事では、Tigを使うモチベーションからインストール、まず覚えるべき「コミット操作」について書いています。

すなわち私が同僚にしたレクチャーの追体験です。

ターミナルにテーマを設定しているため、スクリーンショットがお使いの環境と異なる方が多いと思いますがご容赦ください

モチベーション

  • Gitのコミット操作(ステージ/アンステージ)が素早く行えるようになる。
  • diffの確認がしやすくなる。

他にもあるのですが、まずはgit add (-p)git reset が素早く簡単に出来るようになる、くらいの認識で使いはじめるモチベーションとしては十分かと思います。

ステージ/アンステージ操作
Kobito.qq09Fb.png

インストール

Brew

Brew(ぶりゅー)は Mac 用のパッケージ管理ツールです。

インストールしてない方は、ターミナルを起動して以下のコマンドを貼り付けて実行しましょう。(2016/03/22時点)

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

最新のインストール手順は、以下の公式サイト(日本語)をご参照ください。
http://brew.sh/index_ja.html

Tig

Brewを使ってインストールします。

以下のコマンドをターミナルで実行しましょう。

$ brew install tig

使い方

ファイル単位のステージ/アンステージ

まずはGitリポジトリ(普段gitコマンドを利用しているディレクトリ)に移動します。

そしてコミット用に何か追加・編集した上で、(git addgit commitを使う代わりに)以下のコマンドで Tig を起動します。

$ tig

そうすると以下のようなコミットログが羅列されたような画面が起動します。
(Mainビューと呼ばれるようです)
Kobito.hmkBcX.png

さて、ここであれこれ考える前にさかさずsをタイプし、Statusビューに移行しましょう。
(最初からあれこれやろうとすると訳が分からなくなるので、これ重要です)

そうすると以下のような画面になります。
Kobito.xmzvAF.png

Gitに慣れている方であれば説明するまでも無いかもしれませんが、それぞれ以下の状態を表しています。

項目 説明
Changes to be committed: ステージ済み(コミット対象)
Changed but not updated: 変更したけれど未ステージ(コミット対象外)
Untracked files: まだGitで管理されていないファイル(コミット対象外)

カーソルキーの上下(またはj,k)でカーソルを移動することができ、uでステージ(git add)が行えます。

画面下にも説明が出ていますが、以下の状態でuを押すと、
Kobito.t1TeWZ.png

ステージされました。(READMEChanges to be committed:のエリアに移動しました)
Kobito.PWHcAn.png

そして同じように、Changes to be committed:の一覧でuを押すと、アンステージ(git reset)が行えます。

Statusビューでの基本操作はこれだけです。

キー操作 説明
カーソルキーの上下 or j, k カーソル移動
u ファイル単位のステージ/アンステージ

diff単位でステージ/アンステージ

次にファイル内の特定の差分だけステージ/アンステージする操作(git add -p相当)についてです。

さきほどのファイルが選択された状態でEnterを押すと、画面の右側(または画面の横幅が小さい場合は下側)にdiffビューが表示されます。

Kobito.ebVabr.png

ここでは以下のようなキー操作が行えます。

キー操作 説明
j, k カーソル移動
ctrl-u, ctrl-d ページ単位で上下移動
u ハンク(変更点のかたまり)単位でステージ/アンステージ
1 行単位でステージ/アンステージ
shift-j, shift-k ファイル選択(左側のビュー)を上下移動
q diffビューを閉じる

とりあえずj, kで移動して、ステージしたいハンク(図で言うとピンク文字に囲まれた範囲内)まで移動したらuでステージ、困ったらqで戻る くらいで覚えておけば大丈夫です。

コミット

Statusビュー上でshift-cを押すことでgit commitした時と同じように、vimが立ち上がりコミットメージを入力できる状態となります。

ただし、diffビューが表示されているときはshift-cを押しても無反応なので、必ずqを押してdiffビューを閉じた状態で操作を行います。

つまり、以下のような状態でshift-cを押します。
Kobito.9pj8o4.png

ここまで行ったステージ/アンステージ操作は、きちんとgit操作として反映されています。qを何度か押してTigを終了させてから、git commitコマンドでコミットすることも可能です。

終了

すでに何度か登場していますが、Tigではqを押すことで「ひとつ前の画面に戻る」ことが出来ます。

なので、困ったときはqを連打していればTigを終了することが出来ます。

まとめ

ここまでで登場したViewと、そこで利用可能な主なキー操作をまとめます。

Mainビュー

最初に表示される画面です。

キー操作 説明
s Statusビューに移行

当然ながら他にも操作がありますが、本記事では割愛します。

Statusビュー

現在の状態を確認して、ファイル単位のステージ/アンステージ操作が行える画面です。

キー操作 説明
カーソルキーの上下 or j, k カーソル移動
u ハンク(変更点のかたまり)単位でステージ/アンステージ
Enter 選択中のファイルをdiffビューで表示

diffビュー

diffを確認し、ハンクあるいは行単位のステージ/アンステージ操作が行える画面です。

キー操作 説明
j, k カーソル移動
ctrl-u, ctrl-d ページ単位で上下移動
u ハンク(変更点のかたまり)単位でステージ/アンステージ
1 行単位でステージ/アンステージ
shift-j, shift-k ファイル選択(左側のビュー)を上下移動
q diffビューを閉じる

共通

キー操作 説明
q ひとつ前の画面に戻る

最後に

さて、実際に10分で使いはじめられたでしょうか?

実はQiita上には、すでにTigに関する記事がそれなりに存在しています。
(中にはgif動画で分かりやすく解説されているものもありますし、私も大変お世話になりました)

ただ、冒頭でも触れましたがTigの存在を知りつつも 「面倒そう」「とっつきづらい」「インストールしたけどよく分からない」 といった理由で、Tigの便利さを体感せずに避けてしまう開発者が身近に多かったため、あえてこのような入門記事を書いてみました。

この目論見が成功するかは分かりませんが、 一人でも多くの開発者がTigライフを楽しめれば幸いです。

YusukeHosonuma
iOSテスト本とか書きました。Qiitaでなくブログに書くことも多いです。 📕 iOSアプリ開発自動テストの教科書 / iOSテスト全書 💻 iOS / Swift / Haskell / Go / Java / Ruby 🎤 https://speakerdeck.com/yusukehosonuma
http://blog.penginmura.tech/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした