mcpField
L
Lazygit

Lazygit

公式おすすめ
github.com開発ツール83.5klazygit2 週間前に更新
リポジトリ公式サイト

Lazygit について

Lazygit は Git 操作(ステージング、分岐、リベース、履歴確認など)のための高速で直感的なターミナルインターフェースを提供します。開発者はキーボードショートカットを使用してターミナルから Git リポジトリを効率的に操作できます。

主な機能

  1. 01分岐の作成、切り替え、削除を対話的に行う
  2. 02ファイル変更をステージング・アンステージ・コミットする
  3. 03対話的なリベース、マージ、コンフリクト解決を実行する
  4. 04コミット履歴とファイル変更を素早く確認する

活用シーン

  1. 01複雑な分岐やリベースワークフローの効率化
  2. 02細粒度なコミットと部分的なステージングで履歴を整える
  3. 03マージコンフリクトを解決し、ターミナルを離れずにコード変更をレビューする

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install lazygit

インストール後にlazygit --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
lazygit

詳細

README の画像

Git コマンド向けのシンプルなターミナル UI

GitHub Releases golangci-lint GitHub tag homebrew

スポンサー

このプロジェクトのメンテナンスは、すべてのコントリビューターとスポンサーのおかげで実現しています。このプロジェクトをスポンサーし、アバターや会社のロゴを以下に掲載したい場合は、こちらをクリックしてください。💙

User avatar: Mark LussierUser avatar: Dean HerbertUser avatar: Peter BjorklundUser avatar: Oliver GüntherUser avatar: Pawan DhananjayUser avatar:User avatar: Carsten GehlingUser avatar: AliUser avatar: Chau TranUser avatar: matejcikUser avatar: theAverageDev (Luca Tumedei)User avatar: Erik ScraffordUser avatar:User avatar: Alex StelmachonakUser avatar: Pedro PombeiroUser avatar: Burgy BenjaminUser avatar: Joe KlemmerUser avatar: Tobias LütkeUser avatar: Ben BeaumontUser avatar:User avatar: HollyUser avatar: Tom LanserUser avatar: Casey BoettcherUser avatar: Jeff ForcierUser avatar: Maciej T. NowakUser avatar: James HillyerdUser avatar: YuryUser avatar: Olivier reivilibreUser avatar: Braden SteffaniakUser avatar: SebastianUser avatar: Andy SlezakUser avatar: Martin KockUser avatar: Daniel KokottUser avatar: Jan HeijmansUser avatar: Kevin NowaldUser avatar: Ethan LiUser avatar: Robert ForlerUser avatar: Jan ZenknerUser avatar:User avatar: Frederick MorlockUser avatar: Maximilian LangenfeldUser avatar: AlejandroUser avatar:User avatar: Neil LambertUser avatar: David Heinemeier HanssonUser avatar: Ethan FischerUser avatar: Terry TaiUser avatar: Adam RoesnerUser avatar: Tim MorganUser avatar: Maksym ShypulniakUser avatar: Kovács ÁdámUser avatar: Patricio SerranoUser avatar: KiriUser avatar: Steven MasiniUser avatar: John Even BjørnevikUser avatar: Michael OberstUser avatar: Adam TrepanierUser avatar: Kenth FagerlundUser avatar: Julien TardotUser avatar: Ellord TayagUser avatar: Edgar Post-BuijsUser avatar: Pierre SpringUser avatar: Zac ClayUser avatar: Thomas MüllerUser avatar: Carl AssmannUser avatar: Moody LiuUser avatar: Lasse Bloch LauritsenUser avatar: Alexander SlavschikUser avatar: Aidan GaulandUser avatar: Maksym BieńkowskiUser avatar: Joshua WootonnUser avatar:User avatar: Simon Sandvik LeeUser avatar: Thomas GilbertUser avatar: Szymon MuchaUser avatar: Unnawut LeepaisalsuwannaUser avatar: Bret WortmanUser avatar: Simon CardonaUser avatar: André LameirinhasUser avatar: Scott VelezUser avatar: justinUser avatar: MayfieldUser avatar: Soma HolidayUser avatar: Drew CouncilUser avatar: DessalinesUser avatar: Asuka MinatoUser avatar: Felipe OspinaUser avatar: Riccardo NovagliaUser avatar: Robert BuchbergerUser avatar: housekeeperUser avatar: Grigorii K. ShartsevUser avatar:User avatar: Francis MeetzeUser avatar: Carlos EUser avatar: Darren SpurgeonUser avatar: Nestor CustodioUser avatar: Dani BenglUser avatar: ZachUser avatar:User avatar: Ivan Fedotov

エレベーターピッチ

愚痴を聞いてください。gitは「強力」だと何度も聞かされてきましたが、何をするにもこんなに面倒なのに、その力に何の意味があるのでしょう?インタラクティブリベースをするには、エディターで忌々しい TODO ファイルを編集しなければならない?冗談でしょう? ファイルの一部をステージするには、コマンドラインプログラムを使ってハンクを一つずつ確認する必要があり、ハンクをこれ以上分割できないのにステージしたくないコードが含まれている場合は、難解なパッチファイルを_手作業で_編集しなければならない?本当に冗談でしょう?! ブランチを切り替えるとき、変更を stash するよう求められ、切り替えてから stash を戻してみたら、実はコンフリクトなどなく、そのままブランチをチェックアウトすればよかったと気づくこともあります。もう勘弁してください!

私のような普通の人間で、日々の作業ではgitが強力というより厄介な存在なのに、その強力さを聞かされることにうんざりしているなら、lazygitが役に立つかもしれません。

目次

Lazygitは私の本業ではありませんが、かなりの時間を費やしている副業です。プロジェクトを支援してくださる場合は、スポンサーになることをご検討ください。

機能

ハンクまたは個別の行をステージする

変更のあるファイルで 0 を押すと、メインビューにその差分が表示されます。最初はハンク全体が選択されているため、<space> を押すとそのハンクがステージされ、次のハンクに移動します。ハンクの一部だけを選択するには、a を押して行ごとの選択に切り替え、v を押して行の範囲を選択します。ステージした内容は下のペインに表示されます。<tab> を押すと2つのペインを切り替えられ、下のペインで <space> を押すとステージが解除されます。差分ビューを離れずにコミットするには c を押します。

インタラクティブなリベース

i を押して、インタラクティブなリベースを開始します。その後、TODO のコミットをスカッシュ(s)、フィックスアップ(f)、削除(d)、編集(e)、上に移動(ctrl+k)、下に移動(ctrl+j)してから、m でリベースオプションメニューを開き、「continue」を選択してリベースを続行します。

リベースを明示的に開始しなくても、コミットに対して s を押してスカッシュするなど、これらの操作を単発で実行できます。

このデモでは、shift+down を使ってコミットの範囲を選択し、移動してフィックスアップする方法も紹介しています。

チェリーピック

コミットで shift+c を押してコピーし、shift+v を押して貼り付け(チェリーピック)します。

二分探索

コミットビューで b を押してコミットを正常/不良としてマークし、git bisect を開始します。

作業ツリーを消去する

git status の実行時に表示されるものをすべて消去したい場合(汚れたサブモジュールも含みます)、kidpix のように、shift+d を押してリセットオプションメニューを開き、「nuke」オプションを選択します。

古いコミットを修正する

任意のコミットで shift+a を押すと、現在ステージングされている変更でそのコミットを修正します(バックグラウンドでインタラクティブなリベースを実行します)。

フィルター

/ でビューをフィルターできます。ここではブランチビューを絞り込み、enter を押してそのブランチのコミットを表示します。

カスタムコマンドを実行する

Lazygit には柔軟なカスタムコマンドシステムがあります。この例では、組み込みのブランチチェックアウト操作を再現するカスタムコマンドを定義しています。

ワークツリー

ワークツリーを作成すると、切り替え時にスタッシュしたり、WIP コミットを作成したりせずに、複数のブランチを同時に使えます。ブランチビューで w を押すと、選択したブランチからワークツリーを作成して切り替えられます。

リベースの魔法(カスタムパッチ)

古いコミットからカスタムパッチを作成し、そのパッチをコミットから削除したり、新しいコミットとして切り出したり、インデックスに逆向きに適用したりできます。

この例では、古いコミットに、独立したコミットにするべき変更が含まれています。コミットで 0 を押して差分にフォーカスします。移動したいハンクで <space> を押すとカスタムパッチに追加され、ctrl+p を押すとカスタムパッチのオプションが開きます。そこで、パッチを新しいコミットに移動するオプションを選択します。

詳しくは、リベースの魔法に関する YouTube チュートリアルをご覧ください。

古いコミットからハンクを削除するだけなら、カスタムパッチは不要です。コミットの差分でハンクを選択し、d を押します。Lazygit はバックグラウンドでインタラクティブなリベースを実行し、そのハンクを除いたコミットを書き換えます。

マークしたベースコミットからリベースする

develop ブランチから分岐したフィーチャーブランチにいて、master ブランチから分岐する形に変更したいとします。フィーチャーブランチのコミットだけをリベースする方法が必要です。このデモでは、develop ブランチ上の最後のコミットを確認し、shift+b を押してそのコミットをベースコミットとしてマークしてから、master ブランチで r を押してリベースします。これにより、フィーチャーブランチのコミットだけが引き継がれます。その後、shift+p を押して変更をプッシュします。

元に戻す

z を押すと最後の操作を元に戻し、shift+z を押すとやり直せます。ここでは、いくつかのコミットを削除してから、その操作を元に戻します。 元に戻す機能では、コミットとブランチに固有の reflog を使用するため、作業ツリーや stash の変更は元に戻せません。

詳細情報

コミットグラフ

拡大ウィンドウでコミットグラフを表示すると(画面モードの切り替えには + と _ を使用します)、コミットグラフが表示されます。色はコミットの作成者に対応しており、グラフを下に移動すると、選択したコミットの親コミットがハイライトされます。

2 つのコミットを比較する

コミット(またはブランチ/ref)で shift+w を押すとメニューが開き、そのコミットをマークできます。これにより、ほかのコミットを選択すると、そのコミットとの差分が表示されます。2 つ目のコミットを選択すると、メインビューに差分が表示され、<enter> を押すと差分に含まれるファイルが表示されます。もう一度 shift+w を押すと差分メニューが表示され、差分の方向を逆にする、差分モードを終了するなどのオプションを選べます。<escape> を押して差分モードを終了することもできます。

GitHub のプルリクエストを表示する

ブランチパネルでは、lazyGit はブランチ名の横に GitHub アイコンを表示して、GitHub のプルリクエストが関連付けられているブランチを示します。アイコンの色は PR の状態(オープン、マージ済みなど)を示します。PR がある場合は、shift-G を押すとブラウザーで開けます。github.com でこの機能を有効にするための設定は不要ですが、gh ツールをインストールし、gh auth login を一度実行して lazygit に GitHub へのアクセスを許可する必要があります。GitHub Enterprise の場合は、gh auth login --hostname <webDomain> も実行し、そのホストに対する github プロバイダーの services エントリーを追加してください。

チュートリアル

README の画像

インストール

パッケージの状況

上記のパッケージのほとんどはサードパーティによって保守されています。そのため、ご自身で精査し、保守担当者が信頼できそうな人物かどうか確認してください。たとえば、地域のスポーツイベントに参加したり、バーベキューの募金活動などを通じて地域に貢献したりしている人かどうか、といった点です。

バイナリリリース

Windows、Mac OS(10.12 以降)、または Linux の場合は、こちらからバイナリリリースをダウンロードできます。

Dev container feature

たとえば GitHub Codespaces で lazygit を使用する場合は、上記のバイナリリリースをベースにしたサードパーティの dev container featureを利用できます。

Homebrew

Linux でも動作します。

brew install lazygit
MacPorts

github のリリースからビルドされた最新バージョンです。 Tap:

sudo port install lazygit
Void Linux

Void Linux 用のパッケージはディストリビューションのリポジトリで入手できます。

上流の最新リリースに追従しています。

sudo xbps-install -S lazygit
Scoop(Windows)

scoop を使って lazygit をインストールできます。extras バケットに含まれています。

# Add the extras bucket
scoop bucket add extras

# Install lazygit
scoop install lazygit
gah(Linux および Mac OS)

gah を使って lazygit をインストールできます。

gah install lazygit
Arch Linux

Arch Linux 用のパッケージは、pacman および AUR(Arch User Repository)から入手できます。

パッケージは 2 種類あります。最新リリースでビルドされた安定版と、最新のコミットからビルドされる git 版です。

AUR のコンテンツをインストールする手順はこちらをご覧ください: https://wiki.archlinux.org/index.php/Arch_User_Repository

Fedora / Amazon Linux 2023 / CentOS Stream

Fedora、Amazon Linux 2023、CentOS Stream 用のパッケージは Copr(Cool Other Package Repo)から入手できます。

sudo dnf copr enable dejan/lazygit
sudo dnf install lazygit

これらのパッケージは、こちらにある RPM spec ファイルを使ってビルドされています:https://codeberg.org/dejan/rpm-lazygit

最新の COPR ビルドから入手できる SRPM(Source RPM)ファイルを使って、Fedora 41 以前やその他の Fedora 派生ディストリビューション向けの RPM をビルドできます。

Fedora / RHEL 派生ディストリビューション(Terra)

Fedora および RHEL 派生ディストリビューション用のパッケージは、Terra Repository からも入手できます。

sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
sudo dnf install lazygit

(Atomic/EL のインストールガイドは、こちらの README をご覧ください)

Terra には、docs フォルダーの内容を含む lazygit-doc もあります。

Solus Linux
sudo eopkg install lazygit
Debian および Ubuntu

Debian 13 "Trixie"、Sid 以降、または Ubuntu 25.10 "Questing Quokka" 以降の場合:

sudo apt install lazygit

Debian 12 "Bookworm"、Ubuntu 25.04 "Plucky Puffin" 以前の場合:

LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')
LAZYGIT_ARCH=$(uname -m | sed -e 's/aarch64/arm64/')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_${LAZYGIT_ARCH}.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/

lazygit が正しくインストールされたことを確認します:

lazygit --version
Funtoo Linux

Funtoo Linux には、dev-kit に自動生成された lazygit パッケージがあります:

sudo emerge dev-vcs/lazygit
Gentoo Linux

Lazygit はまだ Gentoo portage のメインには含まれていませんが、GURU overlay に ebuild があります。

overlay をシステムに追加して、通常どおり lazygit をインストールできます:

sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
openSUSE

lazygit パッケージは現在、devel:languages:go/lazygit でビルドされています。

openSUSE Tumbleweed に lazygit をインストールするには、次を実行します:

sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit

openSUSE Leap に lazygit をインストールするには、次を実行します:

source /etc/os-release
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/$VERSION_ID/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
NixOS
nixpkgs の lazygit を使用する

NixOS では、lazygit は nix でパッケージ化され、nixpkgs 経由で配布されています。 インストールせずに lazygit を試すには、次を実行します:

nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit

または、environment.systemPackages オプションを使って、configuration.nix に lazygit を追加できます。 詳細については、NixOS の検索ページをご覧ください。

公式 lazygit flake を使用する

このリポジトリには、最新の開発版と追加の開発ツールを提供する nix flake が含まれています:

リポジトリから lazygit を直接実行する:

nix run github:jesseduffield/lazygit
# or from a local clone
nix run .

ソースから lazygit をビルドする:

nix build github:jesseduffield/lazygit
# or from a local clone
nix build .

開発環境: コントリビューター向けに、この flake は Go ツールチェーン、開発ツール、依存関係を含む開発用シェルを提供します:

nix develop github:jesseduffield/lazygit
# or from a local clone
nix develop

開発用シェルには次のものが含まれています:

  • Go ツールチェーン
  • git および make
  • 開発に適した環境変数

他の flakes で使用する: この flake は、他の flake ベースのプロジェクトに簡単に統合できる overlay も提供します:

{
  inputs.lazygit.url = "github:jesseduffield/lazygit";

  outputs = { self, nixpkgs, lazygit }: {
    # Use the overlay
    nixpkgs.overlays = [ lazygit.overlays.default ];
  };
}
Flox

次のようにして、Flox 環境に Lazygit をインストールできます。

flox install lazygit

Flox の詳細については、公式ウェブサイトをご覧ください。

FreeBSD
pkg install lazygit
Termux
apt install lazygit
Conda

各プラットフォーム向けのリリース版は、https://anaconda.org/conda-forge/lazygit をご覧ください。

conda install -c conda-forge lazygit
Go
go install github.com/jesseduffield/lazygit@latest

ご注意ください: lazygit が見つからない、または定義されていないというエラーが表示される場合は、~/go/bin(macOS/Linux)または %HOME%\go\bin (Windows)を $PATH に追加する必要があるかもしれません。C:\Go\bin と混同しないでください(こちらは Go 自体のバイナリ用であり、lazygit のようなアプリ用ではありません)。

Chocolatey(Windows)

Chocolatey を使って lazygit をインストールできます。

choco install lazygit
Winget(Windows 10 1709 以降)

次のコマンドを使って、Windows Terminal で winget コマンドから lazygit をインストールできます。

winget install -e --id=JesseDuffield.lazygit
手動

Go をインストールする必要があります。

git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install

go run main.go を使うと、コンパイルと実行を一度に行うこともできます(意図的な語呂合わせです)。

使い方

git リポジトリ内でターミナルから lazygit を実行します。

$ lazygit

必要であれば、echo "alias lg='lazygit'" >> ~/.zshrc を使ってエイリアスを追加することもできます(または、お使いの rc ファイルに追加してください)。

キーバインド

キーバインドの一覧はこちらで確認できます。

終了時のディレクトリ変更

lazygit 内でリポジトリを切り替えた後、終了時にシェルのディレクトリもそのリポジトリに変更したい場合は、~/.zshrc(またはその他の rc ファイル)に次の内容を追加してください。

lg()
{
    export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir

    lazygit "$@"

    if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
            cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
            rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
    fi
}

次に source ~/.zshrc を実行してください。以降、lg を実行して終了すると、lazygit 内で開いていたディレクトリに切り替わります。この動作を回避するには、q だけで終了するのではなく、shift+Q で終了してください。

取り消し/やり直し

ドキュメントをご覧ください。

設定

設定ドキュメントをご覧ください。

カスタム差分レンダラー

ドキュメントをご覧ください。

カスタムコマンド

lazygit に不足している機能があれば、カスタムコマンドを使って自分で実装できる可能性があります。

ドキュメントをご覧ください。

Git flow のサポート

インストール済みであれば、Lazygit は Gitflow(または git-flow-next)をサポートしています。Gitflow モデルの仕組みを理解するには、解説した Vincent Driessen の最初の投稿をご覧ください。Lazygit 内で Gitflow のオプションを表示するには、ブランチビューで i を押してください。

コントリビュート

皆さんからのご意見をお待ちしています!コントリビューションガイドをご覧ください。 リポジトリ内での議論に適さない内容についてコントリビューター同士で話し合うには、Discord チャンネルにご参加ください。

README の画像

どこから始めればよいか知りたい方は、lazygit の小さな機能を作成する過程を紹介する動画をご覧ください。

ローカルでのデバッグ

あるターミナルタブで lazygit --debug を実行し、別のタブで lazygit --logs を実行すると、プログラムとログ出力を並べて確認できます。

寄付

lazygit の開発を支援したい場合は、スポンサーになることをご検討ください(github は 12 か月間、すべての寄付と同額を拠出します)。

FAQ

コミットの色は何を表していますか?
  • 緑:コミットが master ブランチに含まれています
  • 黄:コミットが master ブランチに含まれていません
  • 赤:コミットがアップストリームブランチにプッシュされていません

余談

私(Jesse)の開発活動を知りたい方は、twitter をフォローするか、ブログをご覧ください。

代替ツール

lazygit が要件に完全には合わない場合は、次のツールがより適しているかもしれません。

コメント