KENTEM TechBlog

建設業のDXを実現するKENTEMの技術ブログです。

Gitのすゝめ 〜たどり着く先は皆lazygit〜

早いことに4カ月でフロントエンドを卒業し、新機能のバックエンド開発に行かされる新卒エンジニアTYです。

入社以来、Reactに囲まれた幸せな生活を送っていましたが、気づけばバックエンドの開発をすることに怯える生活ワクワクを隠せない生活を送っています。
しかしながら技術スタックが変わっても変わらないものもあります。

そう、Gitです。

皆さんは普段どのようにGit操作しているでしょうか?
CLI派、VS Code派、SourceTree派さまざまな流派が存在するかと思います。

私はすっかりlazygitの信徒と化しているのですが、ふと

みんな何使ってるんだろう?

という疑問が湧きました。

そこでオフィスの先輩方にアンケートを取ってみたところ、lazygitが100%ではないという意外な回答が集まりました。
今回はその結果を眺めながら、Gitツールについてゆるく語っていこうと思います。

なお、本ブログはアンケート結果の共有記事で、決してlazygitの布教記事ではありません。今のところは。

アンケート結果

さて、本題です。
今回のアンケートでは、

普段のGit操作には何を使っていますか?

というシンプルなアンケートです。
結果はこちらです。

1位はさすがにVS Code。
確かにエディタから離れることなく完結できるので、多くの支持を集めるのも納得です。

そして2位はCLI。
やはり環境を問わず使える安心感は大きいですね。

そして3位は......

lazygitでした。

てっきり1位だと思っていました。
普段使っているとあまりにも便利なのでGitはlazygitというのが人類共通認識だと思っていたのですが、どうやら違ったようです。

まだまだ世界は広いですね。

そのほかには、

  • TortoiseGit
  • SourceGit

などの回答もあり、Gitツール界隈の多様性を感じる結果となりました。
そして今回のアンケートでは、利用ツールだけでなくツールの良し悪しについても回答していただきました。
次は、それぞれのツールに寄せられた声を見ていきましょう。

各ツールの推しポイントと不満

VS Code派

今回最も利用者が多かったVS Code。
普段から開いているエディタでそのままGit操作ができるのはやはり強力ですね。

一方で、不満として最も多かったのは「重さ」でした。

VS Code重すぎます。

VSCodeを立ち上げてGit操作ができる状態にセットアップされるまでの待機時間がメッサ遅いです。

ブラウザ1つとNode.js環境を起動しているようなものなので、Git操作だけをしたい時にもそれなりの準備が走ります。

また、

VSCodeのツールがいろいろありすぎて使いこなせないです・・・

VSCodeでGit操作(ブランチ名の変更等)はコマンドパレット使わずGUI操作できると嬉しい

という声もありました。

高機能であることと、使いこなせることは別問題なのかもしれません。

とはいえ、今回のアンケートで最も利用者が多かったのも事実です。   Git操作だけでなく、コーディング、デバッグ、拡張機能まで一つのツールで完結するという体験は非常に強力だからこそ「便利だけどもっとこうだったら嬉しい」という贅沢な悩みが出てくるのかもしれません。

日頃からエディタとして使っている分にはあまり気にならなくても、「ちょっとGit操作だけしたい」という場面では起動や各種拡張機能の読み込みが気になることもあるようです。

もっとも、VS CodeはGit専用ツールではなく、エディタやデバッガー、ターミナルなど開発に必要な機能をまとめて提供してくれる統合開発環境です。

重たいというより、「便利さの代償」と言った方が正しいのかもしれません。

SourceTree派

長年の定番Gitクライアントとして根強い人気があります。 実際、

SourceTreeのほうがわかりやすく機能も豊富。

という声もありました。

一方で、こちらも重さに関するコメントが目立ちます。

fetchと描画を繰り返すので重たい

SourceTreeはコミット履歴やブランチ構造、差分などを常に分かりやすく表示してくれます。

そのため裏側ではGitの情報取得や画面更新が頻繁に行われており、大規模なリポジトリになるほど負荷を感じやすいのかもしれません。

逆に言えば、この分かりやすさこそがSourceTree最大の魅力でもあります。

CLI派

CLI派からは大きな不満はあまり見られませんでした。

さすがGitの本家本元です。ただし、CLIを選び続けている時点である程度慣れている人が回答している可能性もありそうです。

そして回答を眺めながら、私はある考えに至りました。

みんな、まだlazygitに出会っていないだけなのでは?

次はみんなの悩みを解決してくれるlazygitの溢れんばかりの魅力について語ろうと思います。

そこでlazygit

ここまでアンケート結果を見てきましたが、皆さんのお悩みをまとめると

  • GUIで履歴や差分はみたい

  • でもマウス操作は面倒

  • ツールは軽いほうが嬉しい

といった内容のようです。
そんなお悩みを解決してくれる魔法のツールがあります。

そう、lazygitです。

lazygitとは

lazygitはターミナル上で動作するGitクライアントです。
CLIのように軽量でありながら、コミット履歴や差分、ブランチの構造など視覚的に確認することができます。

キーボードだけでほとんどの操作が完結し、しかも動作が軽い。
他のGitツールが起動するのを待っている間に、lazygitなら操作が終わっていることも珍しくありません。

操作がとにかく楽

Gitを使っていて最も高頻度で行う操作はおそらくコミットです。
lazygitでは変更ファイル一覧がもちろん表示され、

  • ステージング

  • 差分確認

  • コミット

を一画面内で完結でき、ステージングもスペースキー押すだけでできちゃいます。
「この変更だけ入れたい」が考えずともできてしまいます。

ブランチ操作が快適

Gitで地味に面倒なのがブランチ操作です。

  • 作成

  • 切り替え

  • 削除

これらも、もちろん一つのキーでできます。
しかも今どのブランチにいるのかも黒背景に明るい緑のマークがつくのでとても分かりやすいです。

履歴が見やすい

アンケートでは、

CLIより視覚的にツリー上で見たいのでGUI派

という意見もありました。
わかります。
Git操作で困るのはコマンドではなく履歴です。

なぜこのコミットがここにいるのか。
昨日の私は何をしたのか。

lazygitはTUIでありながら履歴もツリー状で追いやすく、CLIだけの運用よりも状況把握が容易だと感じています。

正直なところ

良いところは盛り沢山ですが、もちろん万能ではありません。
最初はショートカットキーを覚える必要がありますし、操作方法も正直独特だと感じています。

実はアンケートの回答にもきていたのですが、lazygitではpruneができず、これはCLIを使う必要があります。
一応このお悩みにも解決策がありまして、

git config --global fetch.prune true

を設定すると、fetch実行時に自動でpruneされ、lazygitのfetch操作にも反映されるみたいです。
普段pruneなんて私はしませんが、今回のブログを執筆するにあたって私も一つ勉強できました。

というわけで、私はこれからCLIを使う機会はいよいよなくなりそうです。

私は、

Gitを毎日使うなら、一度は触ってみる価値がある

と思っています。

少なくとも私は、もう別のツールの生活には戻れそうにありません。

おわりに

今回のアンケートをとってみて、Gitとの付き合い方が人によって違うことを改めて実感しました。

もちろん、心の底ではそれぞれのツールにいいところがあることも存じています。

一方で

  • もっと軽くあってほしい

  • コマンドを覚えたくない

  • マウス操作も減らしたい

といった悩みには、私はどうしてもlazygitにたどり着いてしまいます。

ちなみに、この記事を書く前は「社内で使われているGitツールの調査結果をまとめる記事」になる予定でした。
書き終わってみると

「Gitツールの調査結果を利用したlazygitの布教記事」

になっていた気もしますが、それはそれということで。

このブログを読んでいただいた皆さんも、lazygit同志の皆さんも共にlazygit布教活動を頑張りましょう。

KENTEMでは、様々な拠点でエンジニアを大募集しています! 建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。 recruit.kentem.jp career.kentem.jp