tigでgitをもっと便利に! addやcommitも

  • 1344
    いいね
  • 4
    コメント
この記事は最終更新日から1年以上が経過しています。

皆さん、tigコマンドを活用していますか?
tigは、コンソール上で使えるgitブラウザです。実はずっと、ただのきれいなgit logだと思っていたのですが、本当はそんなことはありません。かなり使えるやつなのです。

インストール

ソースコード: https://github.com/jonas/tig
インストール方法: https://github.com/jonas/tig/blob/master/INSTALL.adoc
この辺りを参考にしてみてください。詳細は割愛します。

基本の使い方

この状態の差分を扱っていきます。いつものこれだとこんな感じ。

$ git status

f1bca6c012df42ebc426f7f4eac745ea.png

$ tig

7a006e8830d40d1ffb745b27963d743e.png

git logが素敵にビジュアライズされてます。この画面をmain viewといいます。
ここでエンターを押すと、下半分に差分の詳細(diff view)が表示されます。

8ce252eeb784be7d7bfa578b0396f98f.png

下矢印で、Unstaged changesの差分を見てみるとこんな感じです。git statusChanges not staged for commitに表示されている部分の差分ですね。

97115556f54cae445d3d369332e9d82b.png

ちなみに、この画面でCtrl+uCtrl+djkで上下移動できます。vimと同じですね。

また、main viewにてdを押すと、コミット毎の差分の詳細(diff view)が全画面で表示されます。画面分割では見辛い場合にはこちらをどうぞ。

tigでaddする

ファイルごと u

main viewにて、Sshift+s)を押すと、次のように、git statusの結果が表示されます。

kobito.1393148029.153820.png

この画面でも、エンターを押すとそのファイルの差分を閲覧できます。

好きなファイルを選択した状態で、uを押してみます。
kobito.1393148516.326326.png

MusicLife/DetailViewController.mが、Changed but not updated:からChanges to be committed:に移動しました。
これで、git add MusicLife/DetailViewController.m完了です! 超お手軽。

Changes to be committed:に表示されているファイル名の上でuを押すと、indexから外すこともできます。

一部だけ u

さて、先ほどaddしたファイルの差分を見てみたら、まだcommitしたくない差分も混じっていました。

kobito.1393150786.602393.png

ここだけaddしなかったことにしたい…だけどそのためにファイルを修正するのは面倒です。
そんなときは、下の画像のように、「ここからここまで」の間の行( どの行でもOKです。 自分で範囲選択する必要はありません)を選択して、uを押すと、その範囲だけadd/unstageすることができます。
30bcdfbaace0731cb195eba7517e3506.png

その後の様子。部分的にaddされているため、同じファイルが上段と中段の両方に表示されています。

kobito.1393152062.891265.png

1行だけ 1

さっきの状態に戻って、今度は1行だけadd/unstageしてみようと思います。下の画像のように操作したい行を選択して、1を押します。

kobito.1393157687.663358.png

すると……

kobito.1393157763.490650.png

1行だけunstageされました。画面上部のChanged but not updated:にもファイル名が表示されています。

このように、tigを使うことによって、細かなコミット管理が簡単に行えるようになります!

tigでcommitする C

status viewの画面で、Cshift+c)を押します。

kobito.1393152373.682413.png

いつものgit commitの画面ですね! いつも通り、1行目にコミットメッセージを書いて:wqすればokです。
なお、そこからmain viewに戻ってきても今作ったコミットは表示されていないと思うのですが、Rshift+r)かF5して更新すれば表示されます。

tigでpushする

addとcommitが出来るならpushも、と思って調べてみたのですが、今のところ出来ません。

https://github.com/jonas/tig/issues/199

いいキーバインドがないこと、誤ってリモートリポジトリに修正を加えてしまうことへの不安などが、現在実装されていない理由のようですね。上記Issueで作者の方が書いている方法で、tig上でpushを行うこともできるようですので、tig上で全て完結させたい方は試してみてください。

tigでbranch一覧を見る

main viewHshift+h)を押すと、branchの一覧が表示されます。いちばん上が現在のブランチ、中央の青字がローカルブランチ、下のオレンジ色がリモートブランチです。右はそれぞれのブランチの最後のコミットメッセージです。

kobito.1393155821.133033.png

他にも色々できる!

main viewにてhを押すとヘルプ画面になります。上に挙げた以外にも色々なことができるので、ぜひ試してみてください。

[-] status bindings
External commands:
    'C'                       `git commit`
[-] branch bindings
External commands:
    'C'                       `git checkout %(branch)`
[-] main bindings
External commands:
    'C'                       `git cherry-pick %(commit)`
[-] generic bindings
View switching
    'm'                       view-main            Show main view
    'd'                       view-diff            Show diff view
    'l'                       view-log             Show log view
    't'                       view-tree            Show tree view
    'f'                       view-blob            Show blob view
    'B'                       view-blame           Show blame view
    'H'                       view-branch          Show branch view
    'h'                       view-help            Show help view
    'p'                       view-pager           Show pager view
    'S'                       view-status          Show status view
    'c'                       view-stage           Show stage view

(以下略)