Git 명령을 못 외워서 막히는 개발자는 생각보다 적습니다.
add, commit, push는 대부분 손에
익어 있습니다. 그런데도 사고가 나는 이유는 다른 데 있습니다.
지금 저장소가 어떤 상태인지가 눈에 보이지 않기
때문입니다.
인덱스에 무엇이 올라가 있는지, 리베이스 도중 내가 몇 번째 커밋에 서
있는지, 스태시에 무엇을 넣어뒀는지 — 전부 git status와
git log를 반복해 치면서 머릿속으로 그려야 합니다. 그리고 그
그림이 실제와 어긋나는 순간, 지우면 안 되는 것을 지웁니다.
lazygit은 그 그림을 화면에 띄워 두는 터미널 UI입니다. 이 책은 lazygit
사용 설명서가 아니라, lazygit 화면을 교재 삼아 Git 자체를 익히는
실습서입니다. 그래서 이 책의 모든 단축키 표에는 대응하는 git
명령이 같은 줄에 실려 있습니다. <space>를 누르는 일이
곧 git add라는 사실을 계속 눈으로 확인하게 만드는 것이
목적입니다.
전제는 두 가지뿐입니다.
git add · git commit ·
git push를 한 번이라도 써 봤다그 외에는 전제하지 않습니다. 인덱스와 작업 트리의 차이, 리베이스가 실제로 하는 일, 리플로그가 무엇을 보관하는지는 필요한 자리에서 lazygit 패널과 짝지어 다시 설명합니다. lazygit을 써 본 적이 없어도 되고, 실습 프로젝트로 쓰는 FastAPI를 몰라도 됩니다.
반대로 이 책이 맞지 않는 경우도 적어 둡니다. 버전 관리라는 개념
자체가 처음이라면 git init부터 설명하는 입문서를 한 권 먼저
보고 오는 편이 낫습니다. 이 책은 “명령은 아는데 상태가 안 그려진다”는
지점을 겨냥합니다.
wip 커밋이 잔뜩 쌓인 브랜치를 인터랙티브 리베이스로
정리한 뒤 PR을 올릴 수 있습니다.reset --hard로 날린 커밋을 리플로그에서 되살릴 수
있습니다.customCommands로 단축키에 얹어 자기
도구로 만들 수 있습니다.그리고 그 하나하나가 어떤 git 명령이었는지 말할 수 있게 됩니다. 이쪽이 사실 더 중요합니다. lazygit이 깔려 있지 않은 원격 서버에 접속했을 때 손이 멈추면 안 되니까요.
Git을 다루는 방법은 크게 셋입니다.
CLI는 정확하지만 상태를 보여주지 않습니다. 무엇을
하든 결과를 다시 물어봐야 알 수 있고, 물어보는 명령(status,
log, diff, stash list,
reflog)이 또 제각각입니다.
GUI 클라이언트는 상태를 보여주지만 Git의 어휘를 자기 어휘로 갈아 끼웁니다. “Sync” 버튼 하나가 fetch인지 pull인지 push까지인지 화면만 봐서는 알 수 없습니다. 그래서 도구에는 익숙해지지만 Git에는 익숙해지지 않고, 도구를 바꾸면 처음부터 다시 배웁니다.
lazygit은 그 사이에 있습니다. 터미널 안에서 돌기
때문에 SSH로 들어간 서버에서도 그대로 쓸 수 있고, 화면 구성은 Git
개념(작업 트리·인덱스·브랜치·히스토리·스태시) 그대로이며, @
키를 누르면 방금 실행된 진짜 git 명령이 로그로
나옵니다. 배우는 내내 정답지를 옆에 두고 있는 셈입니다.
이 책이 lazygit을 고른 이유가 여기 있습니다. 편해서가 아니라, 배우는 과정이 그대로 Git 학습이 되기 때문입니다.
FastAPI로 작은 Task API를 하나 만듭니다. 할 일을 만들고 조회하고 수정하고 지우는, 엔드포인트 다섯 개짜리 서비스입니다.
굳이 실제 프로젝트를 쓰는 이유가 있습니다. 파일 하나에 커밋 두 개짜리 연습용 저장소에서는 배울 것이 생기지 않습니다. 한 파일에 두 가지 변경이 섞이지 않으면 라인 단위 스테이징을 할 이유가 없고, 브랜치가 하나면 충돌이 나지 않으며, 커밋이 셋뿐이면 리베이스로 정리할 것도 없습니다. Git의 어려운 기능들은 전부 코드가 어느 정도 쌓인 뒤에야 필요해지는 기능입니다.
그래서 이 책은 gh repo create로 저장소를 만드는 것부터
시작해 라우터를 붙이고, 브랜치를 따고, PR을 올리고, 일부러 충돌을 내고,
히스토리를 정리하고, 태그를 붙이는 데까지 저장소 하나를 끝까지 끌고
갑니다. 대부분의 장이 앞 장의 결과 위에서 시작합니다.
FastAPI 자체는 가르치지 않습니다. 필요한 코드는 본문에 전부 실려 있으니 그대로 옮겨 적으면 되고, 코드가 무슨 뜻인지 몰라도 Git 실습에는 지장이 없습니다. 이 책에서 코드는 “커밋할 거리”입니다.
<space>·<enter>·<ctrl+f>는
그 키 자체를 뜻하고, 대문자는 shift 조합입니다(A는
shift+a).기준 버전: lazygit 0.63.1 (2026-07-15) / gh 2.96.0 / git 2.50.1 / uv 0.11.28 / FastAPI 0.140.0 — 2026-07 확인
본문의 단축키·명령·출력은 모두 이 조합에서 확인한 것입니다. 버전이 더
높아도 대부분 그대로 동작합니다. 만약 단축키가 달라졌더라도
?(현재 패널의 단축키 메뉴)와 @(실행된 git 명령
로그) 두 개면 직접 확인할 수 있습니다. 그래서 이 두 키를 3장에서 가장
먼저 익힙니다.
이 장은 두 가지를 합니다. 실습을 시작하기 전에 갖춰야 할 것을 확인하고, 앞으로 책이 어떤 경로로 움직이는지를 미리 보여줍니다. 지금 전부 이해할 필요는 없고, 나중에 “이게 왜 필요했더라” 싶을 때 돌아와 보는 지도 정도로 생각하면 됩니다.
앞의 셋만 있으면 3장까지는 그대로 진행할 수 있습니다. GitHub 계정과 uv는 4장·5장에 들어가기 전까지 준비하면 됩니다.
실습 저장소는 --public으로 만듭니다. 회사 계정이나 조직
계정으로 로그인한 상태라면 개인 계정인지 먼저 확인하세요.
| 장 | 하는 일 |
|---|---|
| 3 | lazygit을 설치하고 5개 패널이 각각 어떤 Git 개념인지 익힙니다 |
| 4 | gh repo create로 실습 저장소를 만들고 원격을
연결합니다 |
| 5 | FastAPI 코드를 넣고 라인 단위로 골라 첫 커밋을 만듭니다 |
| 6 | 브랜치를 따서 엔드포인트를 추가하고 PR까지 올립니다 |
| 7 | 쌓인 wip 커밋을 인터랙티브 리베이스와 fixup으로
정리합니다 |
| 8 | 커밋을 옮기고(cherry-pick) 되돌리고(revert) 일부만 떼어냅니다 |
| 9 | 일부러 충돌을 내고 화면에서 헝크를 골라 해결합니다 |
| 10 | 스태시·reset·reflog·undo·bisect로 사고 난 저장소를 되살립니다 |
| 11 | worktree·submodule·tag를 다루고 config.yml로 도구를
자기 손에 맞춥니다 |
3장부터 11장까지는 저장소 하나를 계속 이어서 씁니다. 중간에 며칠 쉬었다가 돌아와도 저장소만 그대로 두면 이어집니다.
?를 누릅니다.
?는 지금 포커스된 패널 기준으로 목록을 보여줍니다.@를 눌러
실행된 git 명령을 확인합니다. 이 습관 하나가 이 책 전체에서 가장 오래
남습니다.도구를 깔고 화면과 친해지는 장입니다. 앞으로 나올 모든 실습이 여기서 익힌 다섯 개 패널 위에서 벌어지므로, 이 장만큼은 단축키를 외우기보다 어느 패널이 Git의 무엇에 해당하는지를 잡는 데 집중하세요. 그 대응 하나가 이 책 전체의 뼈대입니다.
설치 방법은 셋입니다. 하나만 골라 실행하면 됩니다. macOS라면 Homebrew, Ubuntu/Debian이라면 apt, 그 외 환경이거나 최신 버전을 직접 받고 싶다면 Go 툴체인을 씁니다.
# macOS (Homebrew)
brew install lazygit gh
# Ubuntu / Debian
sudo apt install lazygit gh
# Go 툴체인 (모든 플랫폼)
go install github.com/jesseduffield/lazygit@latest
# 설치 확인
lazygit --version
gh --version
git --version예상 출력:
commit=, build date=, build source=Homebrew, version=0.63.1, os=darwin, arch=arm64, git version=2.50.1 (Apple Git-155)
gh version 2.96.0 (2026-07-02)
git version 2.50.1 (Apple Git-155)
세 줄이 다 나오면 준비가 끝난 것입니다. 버전 숫자가 이보다 높아도 상관없습니다. 낮다면 — 특히 lazygit이 0.5x대라면 — 뒤에 나오는 단축키 몇 개가 다를 수 있으니 업데이트를 권합니다.
lazygit은 저장소 안에서 인자 없이 lazygit만 쳐도 됩니다.
아래 플래그들은 알아두면 편한 것들인데, 실제로 매일 쓰게 되는 건
-p(다른 저장소 열기), --filter(파일 하나의
히스토리만 보기), --print-config-dir(설정 파일 위치 찾기)
정도입니다. 나머지는 필요해질 때 이 표로 돌아오면 됩니다.
lazygit --help # 전체 도움말
lazygit log # 포커스 패널 지정 (status|branch|log|stash)
lazygit -p ~/work/other-repo # 다른 저장소 열기
lazygit --filter app/main.py # 특정 파일 히스토리만 필터링
lazygit --screen-mode half # 시작 화면 모드 (normal|half|full)
lazygit --print-config-dir # 설정 디렉토리 출력
lazygit --config # 기본 설정 전체 출력
lazygit -ucf ~/dotfiles/work.yml # 커스텀 설정 파일 (쉼표로 복수)
lazygit -w ~/proj -g ~/proj/.git # work-tree / git-dir 명시
lazygit completion zsh # 셸 자동완성 생성 (bash|zsh)
lazygit --debug # 디버그 모드 (별도 탭에서 --logs)저장소에서 lazygit을 실행하면 왼쪽에 세로로 다섯 개의
패널이, 오른쪽에 그 선택 항목의 상세(주로 diff)가 나옵니다. 이 다섯 개는
임의로 나눈 UI가 아니라 Git이 관리하는 다섯 가지 상태를 그대로
하나씩 맡고 있습니다.
| 번호 | 패널 | Git 대응 개념 | 대응 명령어 |
|---|---|---|---|
| 1 | Status | 저장소·브랜치 요약 | git status -sb |
| 2 | Files | 작업 트리 + 인덱스 | git status |
| 3 | Branches | 로컬/원격 브랜치, 태그 | git branch -a, git tag |
| 4 | Commits | 커밋 히스토리, reflog | git log, git reflog |
| 5 | Stash | 스태시 목록 | git stash list |
오른쪽 열의 명령들을 평소에 따로따로 쳐 왔다면, lazygit은 그 다섯 개를 항상 동시에 띄워 두는 도구라고 이해하면 정확합니다. 그래서 “지금 상태가 어떻더라”를 확인하려고 명령을 칠 일이 사라집니다.
여기 있는 표를 다 외울 필요는 없습니다. 당장 필요한 건
1~5(패널 점프),
j/k(항목 이동),
<enter>/<esc>(진입·복귀), 그리고
?(지금 패널의 단축키 전부) 다섯 개뿐입니다. 나머지는 화면을
돌아다니다 보면 자연스럽게 손에 붙습니다.
| 단축키 | 기능 |
|---|---|
1 ~ 5 |
해당 번호 패널로 즉시 점프 |
<tab> / <backtab> |
다음 / 이전 패널 |
h l 또는 ←
→ |
이전 / 다음 패널 |
j k 또는 ↓
↑ |
항목 아래 / 위 이동 |
] / [ |
패널 내 다음 / 이전 탭 |
0 |
메인 뷰 포커스 |
<enter> / <esc> |
진입 / 뒤로 |
v, <shift+↓>,
<shift+↑> |
범위 선택 |
/, n, N |
검색, 다음/이전 결과 |
, / . |
이전 / 다음 페이지 |
< / > |
맨 위 / 맨 아래 |
H / L |
좌 / 우 스크롤 |
+ / _ |
다음 / 이전 화면 모드 |
? |
현재 패널 전체 단축키 메뉴 |
q / Q |
종료 / 디렉토리 변경 없이 종료 |
?는 현재 포커스된 패널 기준으로
단축키를 보여줍니다. 커밋 패널의 ?와 파일 패널의
?는 다른 목록입니다.
@를 누르면 lazygit이 방금 실행한 실제 git
명령이 로그로 나옵니다. 이 책의 표들이 단축키 옆에 git 명령을
나란히 실어 둔 이유가 여기 있습니다. 표를 외우는 대신, 단축키를 누른 뒤
@로 무슨 명령이 나갔는지 확인하는 편이 훨씬 빨리
붙습니다.
앞으로 처음 보는 단축키를 누를 때마다 @를 한 번씩 눌러
보세요. 이 습관 하나가 이 책에서 얻어 가는 것 중 가장 오래 남습니다.
이 문서는 미리보기(샘플)입니다. 전체 내용은 길리랩에서 구매할 수 있습니다.