LIVEReading: Lazygit: A Visual Git UI You Can Actually UseTotal time: 8 minSteps: 7Worked first time: 90% LIVEReading: Lazygit: A Visual Git UI You Can Actually UseTotal time: 8 minSteps: 7Worked first time: 90%
CBW
Lazygit: A Visual Git UI You Can Actually Use
Easygithub.com/jesseduffield/lazygit2026-06-04

Lazygit: A Visual Git UI You Can Actually Use

Lazygit gives you a point-and-click-style interface for Git — right inside your terminal. Stage files, rebase, cherry-pick, and undo mistakes without memorizing commands.

// Build stats

  • Total time8 min
  • Number of steps7
  • DifficultyEasy
  • Worked first time90%
// Before you start

What you need

  • Git installed and working (run: git --version to check)
  • A terminal app (Terminal on Mac, PowerShell or Windows Terminal on Windows)
  • An existing Git repository to practice in
  • macOS, Linux, or Windows 10 (version 1709 or later)
01
Step 1 of 7

Install Lazygit for your operating system

3 min

Pick the install command for your OS below. Each one downloads and installs Lazygit using a package manager that is either already on your system or easy to get. You only need to run ONE of these — the one that matches your OS.

Terminal · mac
$ # macOS (Homebrew):
$ brew install lazygit
$
$ # Windows (Scoop — install Scoop first at scoop.sh if needed):
$ scoop install lazygit
$
$ # Windows (Winget — built into Windows 10 1709+):
$ winget install -e --id=JesseDuffield.lazygit
$
$ # Ubuntu / Debian Linux:
$ DIRPATH=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | grep -Po '"tag_name": *"v\K[^"]*')
$ curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${DIRPATH}/lazygit_${DIRPATH}_Linux_x86_64.tar.gz"
$ tar xf lazygit.tar.gz lazygit
$ sudo install lazygit -D -t /usr/local/bin/
What you should see
No errors. The command finishes and returns you to the prompt.
This might happen

Homebrew says 'command not found: brew'

Install Homebrew first by running: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

02
Step 2 of 7

Confirm Lazygit installed correctly

1 min

Before doing anything else, make sure Lazygit is on your system and your terminal can find it. This one command prints the version number — that is all you need to see.

Terminal · mac
$ lazygit --version
What you should see
Something like: commit=abc1234, build date=..., version=0.44.1 (numbers will vary)
This might happen

'lazygit' is not recognized as a command

Close your terminal completely, reopen it, and try again. The new install path sometimes only loads in a fresh session.

03
Step 3 of 7

Open Lazygit inside a Git repository

1 min

Lazygit must be opened from inside a folder that is already a Git repository. Use cd to navigate to your project folder first, then launch Lazygit. If you do not have a repo handy, the commands below create a quick test one.

Terminal · mac
$ # Option A — open in an existing project:
$ cd /path/to/your/project
$ lazygit
$
$ # Option B — create a fresh test repo first:
$ mkdir my-test-repo && cd my-test-repo && git init
$ lazygit
What you should see
A full-screen terminal UI appears with panels labeled: Status, Files, Branches, Commits, Stash.
This might happen

Error: 'must be run inside a git repository'

Make sure you cd into a folder that contains a .git directory, or run git init to create one.

04
Step 4 of 7

Learn the five panels and basic navigation

5 min

Lazygit's screen is split into panels. Use the number keys 1–5 to jump between them, or press Tab to cycle forward. Arrow keys move up and down within a panel. Press Enter to drill into something. Press Space to stage or unstage a file. Press ? at any time to see all available keyboard shortcuts for the panel you are in. Nothing you do here is permanent until you commit — so explore freely.

Terminal · mac
$ # No command needed — just press these keys inside Lazygit:
$ # 1 = Status panel
$ # 2 = Files panel (your changed files)
$ # 3 = Branches panel
$ # 4 = Commits panel
$ # 5 = Stash panel
$ # Space = stage / unstage selected file
$ # c = open commit message box
$ # ? = show help for current panel
$ # q = quit Lazygit
What you should see
Pressing each number key switches the highlighted panel. Pressing ? shows a scrollable list of shortcuts.
This might happen

Keypresses do nothing or type characters instead of switching panels

Make sure your cursor focus is inside the Lazygit window and not in another app. Click the terminal window once to refocus it.

05
Step 5 of 7

Stage files and make your first commit

3 min

This is the most common daily task. Go to the Files panel (press 2), use the arrow keys to highlight a changed file, press Space to stage it (it moves to the top section), then press c to open the commit message input, type your message, and press Enter to commit. That is the full Git add + commit workflow — no commands needed.

Terminal · mac
$ # Inside Lazygit:
$ # Press 2 to go to Files panel
$ # Arrow keys to select a file
$ # Space to stage it
$ # c to open commit message prompt
$ # Type your message, then press Enter
What you should see
The file disappears from the unstaged list. A new entry appears in the Commits panel (press 4 to check).
This might happen

No files appear in the Files panel

You need at least one changed or new file in the repo. Create a test file with: echo 'hello' > test.txt — then it will appear.

06
Step 6 of 7

Undo a mistake with one keypress

1 min

Lazygit's undo feature is one of its best tricks. If you commit something wrong, drop a commit by accident, or make a mess, press z to undo the last action. Press Shift+Z to redo. This works for commits and branch actions — it uses Git's reflog under the hood. It does NOT undo changes to files you have not committed yet.

Terminal · mac
$ # Inside Lazygit:
$ # z = undo last action
$ # Shift+Z = redo
What you should see
A confirmation prompt appears asking if you want to undo. Press Enter to confirm. The previous state is restored.
This might happen

Undo does not reverse a file deletion or a working-tree change

Undo only works on Git history actions (commits, branch moves). File-level changes that were never committed cannot be recovered this way.

07
Step 7 of 7

Push your changes to a remote

1 min

Once you have commits ready to push, press Shift+P (capital P) from anywhere in Lazygit. It runs git push for you. If your branch has no upstream set yet, Lazygit will ask you to confirm the remote and branch name — just press Enter to accept the defaults.

Terminal · mac
$ # Inside Lazygit:
$ # Shift+P = push to remote
$ # Shift+F = pull from remote (fetch + merge)
What you should see
A small progress overlay appears, then disappears. Your commits panel shows the branch is in sync with the remote.
This might happen

Push fails with 'authentication failed' or 'permission denied'

This is a Git credential issue, not a Lazygit issue. Make sure you have SSH keys or a personal access token set up for your Git host (GitHub, GitLab, etc.) before pushing.

// Status

cooked. baked. worked.

A fast, keyboard-driven Git interface that lives in your terminal. You can stage files, commit, push, pull, undo mistakes, and browse your commit history — all without typing a single git command.

// the honest bit

The honest part

Lazygit is a UI layer on top of Git — it does not change how Git works underneath. If your repo has merge conflicts, authentication issues, or a broken remote, Lazygit will show you the same errors Git would. Advanced features like interactive rebase and custom patches are powerful but have a learning curve; start with staging and committing before trying those. Lazygit also runs entirely in your terminal — there is no graphical window, so it can look unfamiliar at first.