
Git은 강력하다.
문제는 강력한 만큼 불편한 순간도 많다는 점이다.
브랜치를 옮기려는데 stash를 해야 할지 고민해야 하고, interactive rebase를 하려면 에디터에서 TODO 파일을 수정해야 하고, 파일 일부만 스테이징하려면 patch 단위로 씨름해야 한다. 익숙해지면 된다고 하지만, 실무에서는 “익숙함”보다 빠르고 덜 피곤한 워크플로우가 더 중요할 때가 많다.
이럴 때 쓸 만한 도구가 바로 Lazygit이다.
Lazygit은 Git 명령어를 터미널 UI(TUI) 형태로 다룰 수 있게 해주는 오픈소스 도구다.
Lazygit은 Jesse Duffield가 만든 Git용 터미널 UI다.
CLI 자체를 대체한다기보다, 자주 쓰는 Git 작업을 더 직관적이고 빠르게 수행하게 해주는 인터페이스라고 보는 편이 정확하다.
공식 설명도 간단하다.
A simple terminal UI for git commands
즉, Git 명령을 감싸는 가벼운 UI 계층이다.
복잡한 Git 작업을 에디터, patch 파일, 긴 명령어 없이 더 쉽게 처리하도록 돕는다.
Git의 문제는 기능 부족이 아니라 사용 경험이다.
예를 들면 이런 순간들이다.
Git CLI는 강력하지만, 중간중간 작업 흐름을 끊는다.
Lazygit은 이 부분을 줄여준다.
핵심은 하나다.
Git의 기능은 그대로 두고, 조작 비용만 낮춘다.
README 기준으로 눈에 띄는 기능만 추려보면 다음과 같다.
보통 git add -p는 hunk 단위 중심이다.
하지만 Lazygit은 개별 line 선택 스테이징이 가능하다.
space: 현재 라인 스테이징v: 범위 선택a: 현재 hunk 전체 선택실무에서 “한 파일 안의 일부 변경만 커밋하고 싶다”는 상황이 자주 나오는데, 이때 꽤 유용하다.
Lazygit의 강점 중 하나다.
i로 interactive rebase 시작s: squashf: fixupd: drope: editctrl+k / ctrl+j: 순서 이동즉, rebase TODO 파일을 직접 열어 수정하는 대신 UI에서 바로 조작할 수 있다.
Git을 오래 쓴 사람일수록 이 부분의 가치가 크다.
기능은 같지만 인지 부하가 훨씬 낮아진다.
Shift + c: 커밋 복사Shift + v: 붙여넣기(cherry-pick)체리픽은 자주 쓰지는 않아도 필요할 때는 꼭 필요한 기능인데, CLI에서는 매번 커밋 해시를 다뤄야 해서 흐름이 끊긴다. Lazygit은 이 작업을 눈으로 보고 바로 처리하게 해준다.
커밋 뷰에서 b를 눌러 good/bad 마킹을 시작할 수 있다.
버그가 언제 들어왔는지 좁혀가는 git bisect는 강력하지만 CLI로는 다소 딱딱하다.
Lazygit은 이 과정을 조금 더 접근 가능하게 만든다.
변경사항을 전부 날리고 싶을 때 reset 메뉴에서 nuke 옵션을 제공한다.
이 기능은 강력한 만큼 위험하지만,
실험 브랜치나 엉킨 작업 상태를 빠르게 초기화할 때 유용하다.
현재 스테이징된 변경을 예전 커밋에 붙이는 작업도 가능하다.
보통 이런 작업은 interactive rebase 흐름 안에서 처리해야 해서 번거롭다.
Lazygit은 이를 UI 기반으로 단순화한다.
/로 브랜치나 커밋 목록을 필터링할 수 있다.
브랜치가 많거나 히스토리가 긴 저장소에서는 기본적이지만 매우 중요한 기능이다.
Lazygit은 커스텀 커맨드 시스템도 지원한다.
즉, 기본 기능에 없는 작업도 어느 정도 확장 가능하다.
단순 소비용 도구가 아니라 자기 워크플로우에 맞게 커스터마이징 가능한 Git 프론트엔드에 가깝다.
브랜치 전환할 때 stash나 WIP 커밋 없이, 아예 worktree를 따로 생성해서 병렬 작업할 수 있다.
브랜치 여러 개를 동시에 다루는 사람이라면 체감 가치가 크다.
z: undoctrl+z: redoGit 작업 중 실수했을 때 되돌릴 수 있다는 건 심리적 안정감을 준다.
다만 working tree나 stash까지 전부 되돌리는 건 아니고, reflog 기반으로 가능한 범위에서 작동한다.
커밋 그래프를 시각적으로 볼 수 있고, 커밋 두 개를 비교(diff)하는 기능도 제공한다.
CLI에서는 정보가 텍스트 위주로 흩어져 있지만, Lazygit은 관계를 더 한눈에 보여준다.
Lazygit은 모든 사람에게 필수는 아니다.
하지만 아래 유형에는 잘 맞는다.
즉, CLI와 GUI의 중간 지점을 원하는 개발자에게 가장 적합하다.
플랫폼별 설치 경로가 다양하다.
scoop bucket add extras
scoop install lazygit
choco install lazygit
winget install -e --id=JesseDuffield.lazygit
brew install lazygit
go install github.com/jesseduffield/lazygit@latest
설치 후 다음으로 버전 확인이 가능하다.
lazygit --version
Git 저장소 안에서 아래처럼 실행하면 된다.
lazygit
정말 이게 전부다.
별도 복잡한 설정 없이 바로 사용할 수 있다.
보통은 아래 흐름으로 익숙해지면 된다.
즉, 일상적인 Git 작업 대부분을 한 화면 안에서 처리하게 된다.
Lazygit의 장점은 “Git을 더 쉽게 만든다”가 아니다.
더 정확히 말하면:
interactive rebase, cherry-pick, bisect 같은 기능은 원래도 있었다.
Lazygit은 그것들을 덜 귀찮게 만든다.
터미널 → 에디터 → 다시 터미널 같은 흐름이 줄어든다.
이건 생각보다 생산성 차이가 크다.
UI가 받쳐주면 squash, fixup, amend를 더 자주 쓰게 된다.
결국 커밋 품질이 좋아진다.
무조건 만능은 아니다.
Lazygit은 Git을 숨기는 도구가 아니라 Git을 더 다루기 쉽게 만드는 도구다.
rebase, reflog, merge, stash 개념을 모르면 위험한 작업도 쉽게 눌러버릴 수 있다.
TUI는 가볍고 빠르지만, 완전 초보자에게는 여전히 진입장벽이 있다.
예를 들어 rebase 금지, squash merge 규칙, trunk-based 전략 같은 것은 도구가 아니라 팀 프로세스 문제다.
Lazygit은 다음 포지션에 있다.
그래서 개발자에게는 단순 편의 도구가 아니라,
Git 고급 기능을 일상적으로 쓰게 만드는 인터페이스라는 점에서 의미가 있다.
특히 프론트엔드/풀스택 개발처럼 브랜치 실험, 커밋 정리, 빠른 컨텍스트 전환이 잦은 환경에서는 꽤 잘 맞는다.
Git은 강력하지만 불친절하다.
Lazygit은 그 불친절함을 완전히 없애지는 않지만, 적어도 매일 반복되는 불편을 꽤 많이 줄여준다.
정리하면 Lazygit은 이런 도구다.
Git CLI가 너무 번거롭고, 그렇다고 무거운 GUI 클라이언트까지는 원하지 않는다면 Lazygit은 충분히 시도해볼 만하다.
참고: lazygit - Github