Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Git Diff: Hướng dẫn sử dụng

Lệnh git diff hiển thị sự khác biệt giữa file trong hai commit hoặc giữa kho hiện tại và commit trước. Lệnh hiển thị thay đổi với header và metadata cho file đã thay đổi.

Khi làm việc với Git, bạn có thể muốn so sánh dữ liệu trong kho với nguồn khác: so sánh hai commit, hai file, hoặc hai nhánh. Đó là lúc dùng diff. Diffing nhận hai đầu vào và trình bày sự khác biệt. Có thể diff trên nhánh, file, commit.

Hướng dẫn này trình bày cơ bản về diffing với Git và cách dùng git diff kèm ví dụ.

Lệnh Git Diff

Lệnh git diff hiển thị khác biệt giữa file trong hai commit hoặc giữa commit và kho hiện tại. Xem được dòng thêm, xóa, sửa trong file.

Cú pháp:

git diff

Mặc định hiển thị thay đổi chưa commit. Thường dùng so sánh nhánh.

Git Diff giữa hai Commit

So sánh file giữa hai commit bằng cách chỉ định ref (commit ID hoặc HEAD):

git diff <commit1> <commit2>

Lấy ID commit bằng git log --pretty=oneline:

5141ea9c41cdc7152408bfcab54a910f34441855 (HEAD -> master) feat: Update README.md
749055ee99df2aa6f5adc4cbe4bfc708395f1c2e docs: Create README.md

So sánh hai commit này:

git diff 5141ea9c41cdc7152408bfcab54a910f34441855 749055ee99df2aa6f5adc4cbe4bfc708395f1c2e

Git Diff giữa hai Nhánh

So sánh hai nhánh, dùng hai chấm giữa tên nhánh (chỉ lấy commit mới nhất mỗi nhánh):

git diff <nhánh1>..<nhánh2>

Ví dụ so sánh master và dev-v0.9:

git diff master dev-v0.9

So sánh file cụ thể giữa hai nhánh (ví dụ README.md):

git diff master dev-v0.9 ./README.md

Ví dụ Git Diff

Khởi tạo kho rỗng, tạo file README.md nội dung: "This is an example of the Git diff feature." Commit:

git commit

Kết quả: [master (root-commit) 749055e] docs: Create README.md 1 file changed, 1 insertion(+) create mode 100644 README.md

Lúc này git diff không ra gì vì chưa có thay đổi. Thêm dòng: "We just added this line to our file." vào README.md:

echo "We just added this line to our file." >> README.md

Chạy git diff:

diff --git a/README.md b/README.md
index f808522..f08e544 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 This is an example of the Git diff feature.
+We have just added this line to our file.

Kết quả dạng diff kết hợp: dấu + là dòng thêm, - là dòng xóa.

Để diff file cụ thể: git diff README.md.

Phân tích kết quả Git Diff

File đầu vào (Input Files)

Dòng đầu cho biết file nào đang so sánh:

diff --git a/README.md b/README.md

Metadata

Metadata kho Git, ít khi dùng trực tiếp:

index f808522..f08e544 100644

Đánh dấu thay đổi (Change Markers)

--- a/README.md
+++ b/README.md

Dấu -: thay đổi từ file a. Dấu +: phản ánh trong file b.

Thay đổi code (Code Changes)

@@ -1 +1,2 @@
This is an example of the Git diff feature.
+We have just added this line to our file.

Dòng đầu tóm tắt: thêm 1 dòng (+1) bắt đầu dòng 2. Dòng có dấu + là nội dung thêm.

Kết luận

Diffing cho phép so sánh file, nhánh, commit trong Git, xem thay đổi từ một thời điểm. Hướng dẫn đã trình bày cơ bản và cách dùng git diff. Bạn đã sẵn sàng dùng git diff như chuyên gia!