Tools

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.

Trang GitHub của dandavison/delta
Trang GitHub của dandavison/delta (ảnh chụp tháng 11/2026)

GitHub: https://github.com/dandavison/delta · khoảng 33 nghìn sao · Rust · MIT

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ệnhKhác biệt với delta
git diff, git showTô 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 -pNhấn n/N để nhảy giữa các commit và file
git add -pHunk có màu nhờ interactive.diffFilter
git blameHiển thị gọn, có màu theo commit
Merge conflictVớ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 đặt syntax-theme trong mục [delta].
  • Bật tắt hai cột theo ngữ cảnh: để side-by-side tắt mặc định và chạy git -c delta.side-by-side=true diff khi cần, vì hai cột chật trên màn hình hẹp.
  • Dùng với ripgrep: rg --json "pattern" | delta cho 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ùng git --no-pager diff hoặc git 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ải delta (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 zdiff3 ngay 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

  1. dandavison/delta — dandavison (GitHub)