Git Diff
Cập nhật lần cuối
git diff hiển thị chính xác từng dòng thay đổi giữa hai trạng thái của repository. Khi không có đối số, nó cho thấy những gì bạn đã sửa nhưng chưa stage. Thêm --staged để xem những gì đã stage, chỉ định hai commit hoặc hai nhánh để so sánh chúng, hoặc chỉ định một tệp để thu hẹp phạm vi.
Thử các lệnh này trong playground terminal: một shell thật ngay trên trình duyệt, không cần cài đặt gì.
Cú pháp
| Lệnh | Tác dụng |
|---|---|
git diff | Thay đổi chưa stage so với index |
git diff --staged | Thay đổi đã stage so với commit cuối |
git diff HEAD | Mọi thay đổi kể từ commit cuối |
git diff main feature | Khác biệt giữa hai nhánh |
git diff <hash1> <hash2> | Khác biệt giữa hai commit |
git diff -- file.txt | Thay đổi của một tệp |
Tình huống thường gặp
| Mục tiêu | Lệnh |
|---|---|
| Xem những gì sắp commit | git diff --staged |
| Xem phần việc chưa commit | git diff |
| So sánh nhánh của bạn với main | git diff main |
| Chỉ xem tên các tệp đã thay đổi | git diff --name-only |
Câu hỏi thường gặp về git diff
Mặc định git diff hiển thị gì?
git diff hiển thị các thay đổi trong working tree chưa được stage, tức là những gì bạn đã sửa kể từ lần git add gần nhất. Để xem những gì đã stage (và sẽ được commit tiếp theo), dùng git diff --staged; để xem mọi thứ kể từ commit cuối, dùng git diff HEAD.git diff và git diff --staged khác nhau thế nào?
git diff so sánh working tree với staging area (thay đổi chưa stage). git diff --staged (hay --cached) so sánh staging area với commit cuối (thay đổi đã stage). Gộp lại, hai lệnh cho thấy hai nửa của phần việc chưa commit.Làm sao để so sánh hai nhánh hoặc hai commit?
git diff main feature cho thấy hai nhánh khác nhau ở đâu, còn git diff <hash1> <hash2> so sánh hai commit. Thêm -- <file> ở cuối để giới hạn việc so sánh trong một tệp.Làm sao để chỉ xem tệp nào đã thay đổi, không cần diff đầy đủ?
git diff --name-only để chỉ xem tên tệp, hoặc git diff --stat để xem bản tóm tắt gồm từng tệp và số dòng đã thay đổi. Hai lệnh này rất tiện để nắm nhanh tổng quan trước khi đọc diff đầy đủ từng dòng.Có thể luyện tập lệnh này online không?
git diff trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khóa học Git tương tác miễn phí của Coddy cũng hướng dẫn cách xem lại thay đổi từng bước.