AI

Git作業を3倍速くする4ツール【lazygit + delta + gitui + atuin 組み合わせガイド】

Git作業を3倍速くする4ツール【lazygit + delta + gitui + atuin 組み合わせガイド】

Gitは現代の開発に不可欠なツールです。しかし、その強力さゆえにコマンドは複雑になりがちです。 日々の開発で、あなたはこんな経験をしていませんか。

変更したファイルを一つずつ git add していませんか。git diff の出力が長すぎて、どこが変わったか見失っていませんか。 過去に実行した複雑なGitコマンドを、history から延々と探していませんか。 ブランチ間の移動やログの確認に、何度もコマンドを打ち込んでいませんか。

これらの繰り返し作業は、開発者の貴重な時間を奪います。 もし、これらの作業が数回のキー操作で完結する世界があるとしたらどうでしょう。 ターミナル上で直感的かつ高速にGit操作が行えれば、あなたの開発効率は劇的に向上します。 本記事では、Git作業を劇的に加速させる4つのターミナルツールを紹介します。 lazygitdeltagitui、そして atuin です。

これらのツールを組み合わせれば、Gitコマンドの入力回数を減らせます。 視覚的に分かりやすい情報で、判断ミスも防げるでしょう。 コマンド履歴の管理も格段に楽になります。 あなたのGitワークフローを、より快適で生産的なものに変えるためのガイドです。

このツールの組み合わせが最強な理由

この4つのツールは、それぞれが異なる強みを持ちます。 それらを組み合わせることで、Gitワークフロー全体をカバーします。 lazygit は、インタラクティブなGit操作の中心を担います。delta は、差分表示を圧倒的に見やすくします。gitui は、Gitリポジトリの全体像を素早く把握するのに役立ちます。atuin は、過去のコマンド履歴を強力に管理し、再利用を容易にします。

これらは単体でも有用です。しかし、連携させることで真価を発揮します。 例えば、lazygit で変更を確認する際に delta の美しい差分表示が使えます。atuin で過去のGitコマンドを素早く呼び出し、gitui でブランチの状況を俯瞰できます。 それぞれの役割が明確で、互いに補完し合う関係です。 この組み合わせにより、Git作業のあらゆる側面で効率が向上します。

各ツールの役割と担当領域

lazygit

lazygit は、ターミナル上で動作するGitのTUI(Terminal User Interface)です。 ステージング、コミット、リベース、スタッシュなど、複雑なGit操作を直感的に行えます。 コマンドを覚える必要が少なく、キーボードショートカットでサクサク作業を進められます。 特に、インタラクティブなリベースや変更の細かなステージングで威力を発揮します。 視覚的に現在のリポジトリの状態を把握し、必要なアクションを素早く選択できるのが特徴です。 Gitコマンドを一つずつ打つ手間を大幅に削減します。

delta

delta は、git diffgit log -p の出力を視覚的に強化するページャーです。 コードの差分を色鮮やかな構文ハイライトで表示します。 サイドバイサイド表示や行番号表示にも対応し、変更箇所を瞬時に識別できます。 単語レベルの差分もハイライトするため、細かい変更も見落としません。 マージコンフリクトの表示も改善され、解決作業をサポートします。 Gitの出力を見やすくすることで、コードレビューや変更内容の確認が格段に早くなります。

gitui

gitui もまた、ターミナルで動作するGitのTUIツールです。lazygit と同様にTUIですが、主にリポジトリの状態確認やログの閲覧、ブランチ操作に強みがあります。 高速な動作と直感的なインターフェースが特徴です。 コミットログの検索、ブランチの切り替え、スタッシュの管理などをスムーズに行えます。 リポジトリの全体像を素早く把握したいときや、特定のコミットを探したいときに役立ちます。 lazygit が「変更の操作」に強いのに対し、gitui は「情報の閲覧と探索」に優れています。

atuin

atuin は、シェル履歴を強力に管理するツールです。 既存のシェル履歴をSQLiteデータベースに置き換えます。 コマンドの実行時間、終了コード、作業ディレクトリなど、追加のコンテキストを記録します。 Ctrl-r キーバインドを置き換え、フルスクリーンでの履歴検索UIを提供します。 過去に実行した複雑なGitコマンドや、特定のディレクトリで実行したコマンドを素早く見つけ出せます。 複数マシン間での履歴の暗号化された同期機能も備えています。 これにより、コマンドを再入力する手間を省き、思考の中断を減らします。

実際のワークフロー — コマンド例付きのステップバイステップ

ここでは、一般的な開発ワークフローを想定して、各ツールの使い分けを示します。

1. 作業開始とリポジトリの状態確認

新しい機能開発を始める前に、現在のブランチや変更状況を確認します。

gitui

gitui を起動すると、現在のブランチ、コミット履歴、変更ファイル一覧などが一覧表示されます。 キーボードで上下左右に移動し、リポジトリの状況を素早く把握できます。 ここで、ブランチの切り替えや新しいブランチの作成も可能です。

2. コード変更と差分確認

コードを編集した後、変更内容を詳細に確認します。

lazygit

lazygit を起動すると、変更されたファイルが「Files」パネルに表示されます。 ファイルを選択すると、右側のパネルにそのファイルの差分が表示されます。 このとき、delta がページャーとして設定されていれば、美しくハイライトされた差分が見られます。

3. 変更のステージングとコミット

変更内容を確認し、ステージングしてコミットを作成します。

lazygit の「Files」パネルで、変更されたファイルを選択します。space キーを押すと、選択したファイルがステージングされます。 ファイル内の特定の行やHunkのみをステージングすることも可能です。 すべての変更をステージングしたら、c キーを押してコミットメニューを開きます。 コミットメッセージを入力し、Enter でコミットを完了します。

4. コミット履歴の確認と探索

コミットが完了したら、履歴を確認します。

git log # または
gitui

git log コマンドを実行する場合、delta がページャーとして設定されていれば、コミットの差分が美しく表示されます。gitui を起動し、「Commits」パネルに移動すると、よりインタラクティブにコミット履歴を閲覧できます。gitui の検索機能を使って、特定のキーワードを含むコミットを探すことも可能です。

5. リモートへのプッシュ

ローカルの変更をリモートリポジトリに反映します。

lazygit を起動します。p キーを押すと、プッシュオプションが表示されます。 デフォルト設定で p を押すだけで、現在のブランチをリモートにプッシュできます。 プッシュが失敗した場合は、lazygit のメッセージパネルでエラー内容を確認できます。

6. 過去のGitコマンドの再利用

以前実行した複雑なGitコマンドをもう一度使いたい場合。

Ctrl-r

Ctrl-r (atuinのデフォルトキーバインド)を押すと、フルスクリーンで履歴検索UIが表示されます。 キーワードを入力すると、関連するコマンドがリアルタイムで絞り込まれます。 例えば、「git rebase」と入力すれば、過去のリベースコマンドだけが表示されます。 矢印キーで選択し、Enter で実行、Tab で編集してから実行することも可能です。 これにより、長いコマンドを再入力する手間が省けます。

7. リベースなどの複雑な操作

インタラクティブなリベースは lazygit の得意分野です。

lazygit を起動し、「Commits」パネルに移動します。 リベースしたいコミットを選択し、r キーを押してリベースを開始します。 各コミットに対して picksquashfixup などのアクションを視覚的に設定できます。 これにより、コマンドラインでの複雑なリベース操作を、迷うことなく実行できます。

設定ファイル・dotfilesの例

これらのツールを最大限に活用するための設定例です。 以下を .gitconfig やシェル設定ファイル(例: ~/.zshrc)に追記してください。

.gitconfig の設定

deltalazygit の連携、およびdeltaの視認性向上設定です。

[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true  # n/Nでdiffセクション間を移動
    dark = true      # ダークテーマを使用 (ライトテーマなら light = true)
    features = side-by-side line-numbers decorations
    line-numbers-left-style = auto
    line-numbers-right-style = auto
    syntax-theme = monokai # batのテーマ名、好みに合わせて変更
    true-color = always
    width = default
    minus-style = syntax "#400000"
    zero-style = syntax "#0A0A0A"
    plus-style = syntax "#004000"

[merge]
    conflictStyle = zdiff3 # マージコンフリクト表示を改善

[alias]
    lg = lazygit # lazygitをgit lgで起動できるようにする
    gr = gitui   # gituiをgit grで起動できるようにする

[credential]
    helper = store # GitHub CLIなど、credential helperに合わせて設定

シェル設定ファイル (~/.zshrc または ~/.bashrc) の設定

atuin の有効化と、便利なエイリアス設定です。

# atuin の初期化
# atuinをインストール後、`atuin init <YOUR_SHELL>` で出力される内容を追記
# 例: zshの場合
# eval "$(atuin init zsh)"

# atuinのデフォルトキーバインドをCtrl-rに設定(通常は自動設定されます)
# bindkey '^R' _atuin_search # zshの場合

# lazygit のエイリアス
alias lg="lazygit"

# gitui のエイリアス
alias gr="gitui"

# gitのエイリアス (オプション)
alias ga="git add"
alias gc="git commit -v"
alias gs="git status -sb"
alias gd="git diff"
alias gco="git checkout"
alias gl="git log --oneline --graph --decorate"
alias gpom="git pull origin main" # メインブランチ名に合わせて変更
alias gpush="git push"

注意点: atuin init <YOUR_SHELL> の出力内容は環境によって異なります。 インストール後に表示される指示に従って、正確な内容を追記してください。 alias gr="gitui" は、gitui を直接起動するためのエイリアスです。.gitconfigalias.grgit gr のように git コマンドの一部として呼び出すためのものです。 どちらも設定しておくことで、状況に応じて使い分けが可能です。

よくあるトラブルと解決法

1. delta のカラー表示がおかしい、または表示されない

原因: ターミナルが256色やTrue Colorに対応していない可能性があります。 または、TERM 環境変数が適切に設定されていません。解決法:

  • TERM 環境変数を xterm-256coloralacritty など、使用しているターミナルエミュレータに合ったものに設定します。
  • ~/.gitconfig[delta] セクションで true-color = alwaystrue-color = auto に変更してみてください。
  • syntax-theme をシンプルなもの (ansi など) に変更し、問題が解決するか確認します。

2. lazygitgitui のキーバインドが効かない

原因: ターミナルの設定や、他のシェルツールとの競合が考えられます。解決法:

  • ターミナルエミュレータのキーバインド設定を確認し、lazygitgitui のデフォルトキーバインドと衝突していないか確認します。
  • 特に Ctrl-cCtrl-z など、システム予約のキーバインドは変更しない方が無難です。
  • tmuxscreen を使用している場合、これらのツール自身のキーバインドが優先されることがあります。プレフィックスキーの設定を確認してください。

3. atuinCtrl-r が効かない、または古い履歴検索が開く

原因: atuin のシェル初期化スクリプトが正しく読み込まれていないか、他の履歴ツールと競合しています。解決法:

  • ~/.zshrc~/.bashrceval "$(atuin init <YOUR_SHELL>)" が正しく記述され、シェル起動時に読み込まれているか確認します。
  • 他の履歴検索ツール(例: fzf の履歴検索)が Ctrl-r にバインドされている場合、その設定を削除または変更します。
  • bindkey コマンド(zshの場合)で現在のキーバインドを確認し、_atuin_search が割り当てられているか確認します。

4. lazygitgitui で特定のGitコマンドが実行できない

原因: Gitがインストールされていないか、パスが通っていない可能性があります。 または、特定のGitバージョンが必要な機能かもしれません。 解決法:

  • git --version を実行し、Gitが正しくインストールされているか確認します。
  • PATH 環境変数にGitの実行ファイルが含まれているか確認します。
  • ツールのREADMEやドキュメントを確認し、必要なGitの最小バージョンや依存関係を確認します。

今日からできる実行プラン

ステップ1: 各ツールのインストール

まず、お使いの環境に合わせて各ツールをインストールします。 多くのパッケージマネージャーで提供されています。

# lazygitのインストール例 (macOSの場合)
brew install lazygit

# deltaのインストール例 (macOSの場合)
brew install git-delta

# gituiのインストール例 (macOSの場合)
brew install gitui

# atuinのインストール例 (macOSの場合)
brew install atuin

LinuxやWindowsなど、他のOSでのインストール方法は各ツールの公式ドキュメントを確認してください。

ステップ2: 設定ファイルの導入

本記事の「設定ファイル・dotfilesの例」セクションを参考に、設定を導入します。~/.gitconfig とシェル設定ファイル(~/.zshrc など)を編集してください。atuin init コマンドで出力される内容を忘れずに追記しましょう。

# atuinの初期化スクリプトを生成し、シェル設定ファイルに追記
atuin init $(basename $SHELL) >> ~/.zshrc # もしくは ~/.bashrc

設定変更後は、シェルを再起動するか source ~/.zshrc などで設定を反映させます。

ステップ3: 実際の開発で使ってみる

インストールと設定が完了したら、実際にGitリポジトリで使ってみましょう。 まずは lazygitgitui を起動し、キーボード操作に慣れることが重要です。git diffgit log を実行して、delta の出力を見てみてください。Ctrl-ratuin の履歴検索を試してみましょう。 少しずつこれらのツールを普段のワークフローに取り入れていくことで、その効果を実感できます。 慣れてくれば、Git作業のスピードが格段に向上するはずです。

関連ページ

参考文献

広告

-AI