Lazygit: giao diện terminal git cho staging và rebase
Lazygit biến các nghi thức dòng lệnh của git thành từng phím bấm đơn: space để stage một dòng, i để bắt đầu rebase tương tác, z để undo. Nó xử lý đúng những thao tác git rắc rối nhất — stage từng phần, rebase qua TODO file, tách patch — ở chỗ mà CLI git thuần khiến bạn phải vật lộn với editor. Điểm cần lưu ý: undo dựa vào reflog của git, nên không thể khôi phục thay đổi ở working tree hay stash, chỉ khôi phục được commit và branch.
Lazygit là gì?
Lazygit là một terminal UI viết bằng Go, bọc quy trình dòng lệnh của git vào các panel điều khiển bằng bàn phím cho status, branch, commit và stash. Nó chạy ngay trong terminal, song song với git và shell hiện có, không cần cài thêm GUI riêng. README tự mô tả đây là một terminal UI đơn giản cho các lệnh git: không có quy trình review pull request, không có công cụ merge trực quan, chỉ là thao tác nhanh hơn với các hành động của git.
Tính năng chính
- ✓Stage từng dòng hoặc từng vùng bằng space, nhấn v để chọn một dải dòng, hoặc a để lấy nguyên một hunk — khỏi cần dò từng hunk kiểu git add -p.
- ✓Rebase tương tác chỉ trong một màn hình: nhấn i để bắt đầu, rồi s để squash, f để fixup, d để drop, e để edit, hoặc ctrl+k/ctrl+j để sắp xếp lại commit, không cần sửa tay TODO file.
- ✓Cherry-pick bằng shift+c để copy một commit và shift+v để paste nó sang branch khác.
- ✓Git bisect ngay trong commits view — đánh dấu commit good hay bad bằng phím b.
- ✓Worktree: nhấn w trên một branch để tạo worktree và chuyển sang đó ngay, khỏi phải stash qua lại khi làm việc với hai branch cùng lúc.
- ✓Custom patch: dựng một patch từ commit cũ, rồi tách thành commit mới hoặc áp ngược lại, qua quy trình rebase magic.
- ✓Hiển thị pull request GitHub ngay trong branches panel (cần cài CLI gh và đăng nhập) — shift-G mở PR đó trong trình duyệt.
- ✓Undo và redo các thao tác ở cấp commit bằng z và shift+z, dựa trên reflog của git.
Cài đặt Lazygit
Lazygit có sẵn bản binary cho Windows, macOS (10.12 trở lên) và Linux, tải trực tiếp từ trang releases trên GitHub. Trên macOS và Linux, Homebrew dùng được cho cả hai: brew install lazygit. Người dùng Linux còn có gói riêng theo distro — sudo pacman -S lazygit trên Arch, sudo apt install lazygit trên Debian 13/Trixie và Ubuntu 25.10 trở lên (Debian/Ubuntu cũ hơn cần dùng script curl-và-tar trong README), sudo dnf install lazygit qua repo Copr hoặc Terra trên Fedora, CentOS Stream và các bản dẫn xuất RHEL, sudo xbps-install -S lazygit trên Void, sudo eopkg install lazygit trên Solus, và sudo zypper in lazygit trên openSUSE. Người dùng NixOS có thể thử ngay không cần cài qua nix-shell -p lazygit hoặc nix run nixpkgs#lazygit; repo cũng đi kèm flake riêng. Trên Windows, cài qua Scoop (scoop install lazygit từ bucket extras), Chocolatey (choco install lazygit), hoặc Winget (winget install -e --id=JesseDuffield.lazygit). Lập trình viên Go có thể bỏ qua trình quản lý gói, dùng thẳng go install github.com/jesseduffield/lazygit@latest, và thêm ~/go/bin vào PATH nếu sau đó không tìm thấy lệnh. FreeBSD (pkg install lazygit), Termux (apt install lazygit) và Conda (conda install -c conda-forge lazygit) cũng được hỗ trợ.
Chạy Lazygit
Sau khi cài, chạy lazygit trong bất kỳ thư mục repo git nào — không cần khởi tạo hay file cấu hình gì để có ngay giao diện panel hiển thị status, file, branch, commit và stash. Nhiều người tạo alias, ví dụ alias lg='lazygit' trong .zshrc, để gõ hai ký tự là mở được. README dẫn tới một trang keybindings đầy đủ thay vì liệt kê hết trong README, nhưng những thao tác được nêu ánh xạ thẳng từ vựng của git sang từng phím đơn — space để stage, i để bắt đầu rebase, z để undo. Nếu muốn shell tự cd vào repo bạn vừa chuyển sang bên trong Lazygit khi thoát ra, README có sẵn một hàm shell đọc biến môi trường LAZYGIT_NEW_DIR_FILE, còn shift+Q dùng để thoát mà không đổi thư mục. Lazygit cũng tự nhận Gitflow (hoặc git-flow-next) nếu bạn đã cài, hiện menu Gitflow bằng phím i từ branches view, và hệ thống custom command cho phép gán lệnh shell riêng vào phím cho những thao tác chưa có sẵn.
Bạn có thể làm gì với Lazygit
- •Stage một phần thay đổi trong file, theo từng hunk hoặc từng dòng, trước khi commit.
- •Dọn dẹp một feature branch bằng rebase tương tác trước khi mở pull request.
- •Lấy đúng một commit từ branch khác bằng cherry-pick, thay vì merge cả branch.
- •Bisect một lỗi hồi quy bằng cách đánh dấu commit good hoặc bad ngay trong commits view.
- •Làm việc song song trên nhiều branch bằng worktree, thay vì stash và checkout lặp đi lặp lại.
- •Kiểm tra branch nào đã có pull request GitHub mở sẵn, không cần rời khỏi terminal.
Điểm mạnh
- ✓Mỗi thao tác git chỉ một phím: stage, rebase, cherry-pick và bisect đều làm được ngay trong panel đang xem, không cần rời màn hình.
- ✓Rebase tương tác mà không cần đụng tới TODO file trong editor — squash, fixup, drop, sắp xếp lại đều là phím bấm trực tiếp.
- ✓Tạo worktree chỉ bằng một phím (w), bỏ qua hẳn màn stash-hoặc-commit thường thấy khi đổi branch.
- ✓Đóng gói đa nền tảng: có bản binary cho Windows, macOS 10.12 trở lên và Linux, cùng cài đặt qua trình quản lý gói trên hầu hết nền tảng chính theo README.
- ✓Filter (/) thu hẹp bất kỳ view nào — branch, file, commit — để tìm đúng thứ cần trong repo lớn mà không phải cuộn tay.
Hạn chế
- △Undo dựa vào reflog của git, nên chỉ áp dụng cho commit và branch — không thể undo thay đổi ở working tree hay stash, theo README.
- △Hiển thị pull request GitHub cần cài riêng CLI gh và chạy gh auth login; không có tích hợp PR sẵn có trong Lazygit.
- △Đây là một terminal UI bọc quanh chính các lệnh git, không thay thế git — vẫn cần hiểu khái niệm git như rebase, stash, reflog để dùng tốt.
- △Phần cài đặt trong README là một danh sách dài các gói bên thứ ba (Homebrew, AUR, Copr...) và tự nhắc người dùng nên tự kiểm chứng, vì phần lớn không do chính dự án duy trì.
Các lựa chọn thay thế đáng cân nhắc
Câu hỏi thường gặp
Lazygit miễn phí và mã nguồn mở: phát hành theo giấy phép MIT với toàn bộ mã nguồn trên GitHub, nên không có gói trả phí để mở khoá tính năng nào.
Lazygit có bản binary cho Windows, macOS (10.12 trở lên) và Linux, và README còn liệt kê cả Homebrew, MacPorts, Scoop, các gói distro Linux, FreeBSD và Termux.
Lazygit hỗ trợ undo và redo bằng phím z và shift+z, dựa trên reflog của git. Việc này khôi phục được thao tác ở commit và branch, nhưng theo README thì không undo được thay đổi ở working tree hay stash.
Trên Windows, có thể cài Lazygit qua Scoop (scoop install lazygit từ bucket extras), Chocolatey (choco install lazygit), Winget (winget install -e --id=JesseDuffield.lazygit), hoặc tải thẳng bản binary release.
Lazygit hiển thị icon GitHub cạnh các branch có pull request liên kết, màu sắc thể hiện trạng thái PR, và shift-G sẽ mở PR đó trong trình duyệt. Tính năng này cần cài CLI gh và đăng nhập bằng gh auth login.
README của chính Lazygit liệt kê GitUI và tig như các lựa chọn thay thế nếu Lazygit không phù hợp, mà không nêu chi tiết khác biệt tính năng. Cả ba đều là git client chạy trong terminal; bảng cài đặt và các phím tắt rebase, cherry-pick trong bài là đặc trưng riêng của Lazygit.
Vấn đề mà Lazygit giải quyết
Git thuần khiến hai việc thường ngày trở nên khó chịu: stage từng phần và rebase tương tác. Stage chỉ một phần thay đổi trong file nghĩa là chạy git add -p rồi dò qua từng hunk, và nếu một hunk trộn lẫn dòng muốn giữ với dòng không muốn, tách nó ra nghĩa là phải sửa tay một patch file. Rebase tương tác nghĩa là mở $EDITOR với một TODO file, đối chiếu hash commit bằng mắt, rồi lưu đúng cách hoặc abort cả rebase. Lazygit biến cả hai thành phím bấm trong một màn hình. Không cần sửa TODO file. Không cần sửa tay patch file.
Ai nên dùng — và ai nên bỏ qua
Dùng Lazygit nếu bạn đã nắm khái niệm git — branch, rebase, stash — nhưng ngán việc gõ tay rebase tương tác và git add -p; các phím tắt giúp bạn đỡ gõ lệnh, chứ không giúp bạn khỏi cần hiểu git. Bỏ qua Lazygit nếu bạn muốn một GUI thao tác bằng chuột với diff trực quan và công cụ merge trực quan, hoặc nếu bạn thấy dùng git nguyên bản qua dòng lệnh vẫn ổn.
Repo liên quan
Muốn nghe thêm một ý kiến về lazygit?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về lazygit.
