どうもこんにちは、パンカメです。
筆者は普段Web開発に携わっています。
最近は、「どうせ開発するなら、自分のテンションが上がるツールを使って開発したいなー」と思っていて改めてVim入門したりdotfiles管理をもっと便利にしたりなどやっています。
その中でターミナル上でgit操作を快適に行うことのできるlazygitというツールを知り、こんなカッコいいツールがあるんだと衝撃を受けました!
普段の仕事ではまだVSCodeとtigを使ってgit操作を行っていますが、本格的に導入するために操作まわりを整理してみたのでぜひ覗いてみてください。
┌┬(゜<――@ 「lazygitかっこいいので広めたい」
lazygitとは
jesseduffield/lazygit: simple terminal UI for git commands
lazygitをインストールすれば、ターミナル上でlazygit
と打つだけで起動できて、ターミナルUIでgit操作ができるツールです。(q
で終了できます)。
マウス操作も反応するのでパネル間の移動やコミットの選択をマウスで選択したりもできます。
基本的にはコマンド操作で全ての操作が完結するのがlazygitのいい所ですが、慣れないうちは便利ですね。
(このテキストベースで黒い画面で操作する感じがかっこいい…)
インストール方法
インストールはとても簡単です。
公式のインストール方法を参考にインストールします。
筆者の場合は、WSLのUbuntuにlinuxbrew(homebrew)を入れているので、brewコマンドを使ってインストールします。
brew install lazygit
lazygitの画面の説明
lazygitでは最初からいい感じにエリア(パネル)ごとにできることが決まっていて、やりたいことに応じてパネルを移動してコマンドでgit操作を行います。
パネル毎の領域がわかりやすいように透ける白背景で分かりやすく加工しています。
Status
今いるリポジトリとブランチ名を確認できます。
Files
VSCodeのgit画面と同じく変更したファイルの一覧が表示され、addやcommit等を行うことができます。
Local Branches
ローカルブランチの一覧が見れます。
ブランチの作成・削除・切替などを行う事ができます。
Commits
今いるブランチのコミット履歴が見れます。
コミットハッシュ値が黄色の場合はすでにリモートにpushしたコミットで、赤色の場合はローカルでのみコミットしたものになります。リモートにpushすると黄色になります。
Stash
Stashの一覧が見れます。
applyやpopなどの操作を行うことができます。
Command Log
lazygitでコマンド操作した場合に実際はgitコマンドが実行されており、そのコマンドの履歴を確認することができます。
操作方法
簡単な操作方法(これだけ覚えればとりあえずは使える!)
lazygitはとりあえず、移動方法とヘルプが見られれば最低限すぐに使えるようになるので、「lazygitカッコいい!今すぐに触ってみたい」という人のために移動方法とヘルプの見方だけ抑えておきましょう。
移動方法
コマンド | 説明 |
---|---|
h ,l or Tab ,S-Tab
|
パネル移動(進む/戻る) |
j ,k
|
パネル内移動(上/下) |
@ → Focus command log
|
Command Logへ移動 |
※他のパネルと違いCommand Logへの移動は@
→ Focus command log
で移動するようです(戻る場合は、ESC
で戻れます)。
ヘルプの見方
操作がわからない場合はx
キーを押せばそのパネルでできる操作コマンドの一覧を表示することができとても便利です。
例として、Statusパネルでx
を押してみましょう(閉じる場合はESC
で閉じます)。
次のようなヘルプウィンドウがフローティングで表示されます。
上部のコマンドがStatusパネルでのみ使えるコマンドで、下部のコマンドが全パネル共通のコマンドです。他のパネルでも同じような感じで表示されます。
一行の空行が区切りになっているので見方さえ覚えてしまえば簡単ですね。
基本的なgit操作編
rebaseやreflogなど応用的な操作もできるのですが、まだ使いこなせていないので基本的なgit操作について紹介していきます。
checkout -bする
ここでは「develop」というローカルブランチを作成していきます。
- 「Local Branches」パネルに移動
-
n
を押して、ブランチ名を入力してEnter
で作成
checkoutする
ここでは「develop」ブランチから「main」ブランチに移動します。
- 「Local Branches」パネルに移動
- 切り替えたいブランチに移動して、
SPC
branch -dする
ここではローカルの「develop」ブランチを削除してみます。
- 「Local Branches」パネルに移動
- 削除したいブランチに移動して、
d
を押してEnter
で削除
pullする
リモートの「main」ブランチに他の人の変更が入ったと見立てて、「main」ブランチをpullします。
- 「Local Branches」パネルに移動
- pullしたいブランチに移動して、
p
addする
ファイル単位でadd
- 「Files」パネルに移動
- addしたいファイルに移動して、
SPC
※もう一度、SPC
でファイルのadd取り消し
ファイル内の行ごと(ハンク)でadd
行ごとにadd(ハンク)するのが簡単にできます。
vimと同じようにv
でビジュアルモードにして複数行をハンクしたりもできるので、直感的にそして簡単に操作できます。
- 「Files」パネルに移動
- ハンクしたいファイルに移動して
Enter
してUnstaged Changesに移動 - 一行ずつハンクする場合は、
SPC
。v
でビジュアルモードにして行選択してSPC
すると複数行ハンクできます。 - Unstaged Changes/Staged Changesは
TAB
で移動。Staged Changesから取り消したい場合も同じくSPC
で取り消し。 - 「Files」パネルに戻るには
ESC
全ファイルをadd
- 「Files」パネルに移動
-
a
で全てのファイルをadd ※もう一度a
で全てのファイルのadd取り消し
commitする
- 「Files」パネルに移動
-
c
でコミットメッセージを入力してEnter
してコミット
pushする
ローカルでのみコミットしている場合は「Commits」パネルのコミットハッシュ値が赤く表示されます。
このコミットをリモートブランチにpushします。
pushが完了するとコミットハッシュ値が黄色くなります。
-
P
でリモートへpush
stashする
- 「Files」パネルに移動
-
s
でstash名を入力してstash - 戻すときは「Stash」パネルに移動
-
SPC
でapply、g
でpop、d
でdropできます。ここでは、g
でpopしています。
gitコマンドを直接実行する
lazygit上で用意されていないgit操作を行いたい場合は、:
でカスタムコマンドを実行することができます。
ここでは、ローカルで色々操作したけど、とりあえずリモートのブランチの状態に戻したいときに使うコマンドgit reset --hard origin/main
を実行してみます。
まとめ
lazygitいかがだったでしょうか。
意外に操作方法を見てみると、簡単にできそうという印象があるのじゃないでしょうか。
筆者も最初は難しいかなーと思っていたのですが、パネル毎の役割とx
を押せばとりあえずなんとかなるというのが分かってからはすごい使いやすいなーと思っています。
最初は筆者のように練習用のリポジトリを作って、そこで操作を色々試すのがおすすめです。
lazygitは操作した内容の実際のgitコマンドも履歴を見ればわかるので、知らないgitコマンドの意味を調べたりもできて結構gitの勉強にもなります!
今はtigをメインで使っているのですが、何か特別な設定をしなくてもたくさんのgit操作を行うことができるlazygitは慣れると便利です。
あと、やっぱりカッコいいです!ツールはどうせなら自分のテンションがあがるものを使っていきましょう!