delta: làm git diff dễ đọc với tô màu cú pháp và chế độ hai cột
Tóm tắt
delta tô màu cú pháp cho git diff, show, log -p, blame và làm nổi bật đúng phần chữ thay đổi. Cấu hình bốn dòng gitconfig, bật navigate, line-numbers và merge.conflictStyle = zdiff3.
Output mặc định của git diff chỉ có hai màu xanh đỏ cho cả dòng. Khi chỉ một ký tự trong dòng dài bị đổi, bạn phải căng mắt so sánh hai dòng gần như giống hệt. Diff dài nhiều file thì khó biết đang ở file nào. delta là pager cho Git: tô màu cú pháp theo ngôn ngữ, làm nổi bật đúng phần chữ thay đổi trong dòng, có số dòng, chế độ hai cột, và phím tắt nhảy giữa các file.

Cài đặt
brew install git-delta # macOS (tên gói là git-delta, lệnh là delta)
sudo apt install git-delta # Ubuntu/Debian bản mới
cargo install git-delta # có Rust
Cấu hình Git dùng delta
Chạy bốn lệnh sau (theo README) để Git dùng delta cho mọi output diff:
git config --global core.pager delta
git config --global interactive.diffFilter 'delta --color-only'
git config --global delta.navigate true
git config --global merge.conflictStyle zdiff3
Hoặc viết thẳng vào ~/.gitconfig:
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true # n / N để nhảy giữa các phần diff
line-numbers = true
side-by-side = true # hai cột: cũ bên trái, mới bên phải
[merge]
conflictStyle = zdiff3
Những gì thay đổi sau khi bật
| Lệnh | Khác biệt với delta |
|---|---|
git diff, git show | Tô màu cú pháp, nổi bật chữ thay đổi trong dòng, tiêu đề từng file rõ ràng |
git log -p | Nhấn n/N để nhảy giữa các commit và file |
git add -p | Hunk có màu nhờ interactive.diffFilter |
git blame | Hiển thị gọn, có màu theo commit |
| Merge conflict | Với zdiff3, thấy cả phiên bản gốc chung để hiểu hai bên đã sửa gì |
Mẹo thêm
- So sánh hai file bất kỳ:
delta old.json new.json. - Đổi theme: xem danh sách bằng
delta --list-syntax-themes, rồi đặtsyntax-themetrong mục[delta]. - Bật tắt hai cột theo ngữ cảnh: để
side-by-sidetắt mặc định và chạygit -c delta.side-by-side=true diffkhi cần, vì hai cột chật trên màn hình hẹp. - Dùng với ripgrep:
rg --json "pattern" | deltacho kết quả tìm kiếm có màu cú pháp. - Dùng trong lazygit: đặt delta làm pager trong cấu hình lazygit để khung diff đẹp hơn.
Lưu ý
- Nếu script của bạn đọc output
git diff, hãy dùnggit --no-pager diffhoặcgit diff | cat; khi pipe, Git thường không gọi pager, nhưng nên kiểm tra. - Chế độ hai cột cần terminal đủ rộng; dòng dài sẽ bị gói.
- Tên gói trên Homebrew và apt là
git-delta, không phảidelta(gói khác).
Áp dụng thế nào?
- Dev: Cấu hình một lần, mọi lệnh Git đều đẹp hơn. Bật
zdiff3ngay cả khi không dùng delta: nó giúp giải conflict chính xác hơn. - Tech Lead: Khi review cục bộ trước khi đẩy PR,
git diff main...với delta giúp phát hiện thay đổi nhỏ (dấu, khoảng trắng) mà diff thường làm lẫn. - PM: Review nhanh và chính xác hơn trực tiếp giảm lỗi lọt qua; đây là thay đổi cấu hình 2 phút.
Nguồn & tham khảo
- dandavison/delta — dandavison (GitHub)