Tự học Git | Câu lệnh Git Diff Cafedev.vn

0
48
Rate this post

Git diff là một công cụ dòng lệnh mạnh mẽ. Đây là một lệnh git có mục đích tổng quát. Khi được thực thi, lệnh này thực hiện một tác vụ khác nhau trên nguồn dữ liệu của git. Các nguồn dữ liệu này có thể là tệp, nhánh, commit và nhiều hơn nữa. Nó được sử dụng để hiển thị sự khác biệt giữa các commit, giữa commit và cây làm việc, vv.

Lợi ích của lệnh git diff

Lệnh git diff rất hữu ích để làm việc với git. Nó giúp chúng ta so sánh các phiên bản khác nhau của nguồn dữ liệu. Trong hệ thống quản lý phiên bản, làm việc với các phiên bản đã được thay đổi của tệp là quan trọng. Do đó, lệnh diff là một công cụ hữu ích để làm việc với git.

Tuy nhiên, chúng ta cũng có thể theo dõi các thay đổi sử dụng lệnh git log với tùy chọn -p. Lệnh git log cũng hoạt động như một lệnh git diff.

Hãy cùng khám phá các tình huống khác nhau mà chúng ta có thể sử dụng lệnh git diff.

Tình huống 1: Theo dõi các thay đổi không được tổ chức

Chúng ta có thể theo dõi các thay đổi chưa được chuẩn bị trước sử dụng lệnh git diff. Ví dụ, nếu chúng ta đã chỉnh sửa tệp newfile1.txt, và muốn theo dõi các thay đổi chưa hoàn thành, chúng ta có thể sử dụng lệnh git diff. Xem kết quả sau:

[insert image here]

Từ kết quả trên, chúng ta có thể thấy các thay đổi đã được thực hiện trên newfile1.txt được hiển thị bằng lệnh git diff. Như chúng ta đã chỉnh sửa, chúng là “những thay đổi đã được thực hiện để hiểu lệnh git diff”. Vì vậy, đầu ra cho thấy sự thay đổi trong nội dung của nó. Phần được đánh dấu trên kết quả là những thay đổi đối với tệp đã được cập nhật. Bây giờ, chúng ta có thể quyết định xem chúng ta có muốn chấp nhận thay đổi này hay không khi xem trước các thay đổi.

Tình huống 2: Theo dõi các thay đổi chưa cam kết

Lệnh git diff cho phép chúng ta theo dõi các thay đổi đã thực hiện nhưng chưa được cam kết. Chúng ta có thể theo dõi các thay đổi trong vùng chế độ sắp sẵn (staged). Để xem các tệp chưa được theo dõi, chạy lệnh git status như sau:

[insert image here]

Lệnh trên sẽ hiển thị các tệp chưa được theo dõi. Bây giờ, chúng ta có thể thêm chúng vào vùng chế độ sắp sẵn (staging). Để thêm tệp vào vùng chế độ sắp sẵn, chạy lệnh git add như sau:

[insert image here]

Lệnh trên sẽ thêm tệp vào vùng chế độ sắp sẵn. Xem kết quả sau:

[insert image here]

Bây giờ, tệp đã được thêm vào vùng chế độ sắp sẵn, nhưng nó vẫn chưa được cam kết. Vì vậy, chúng ta cũng có thể theo dõi các thay đổi trong vùng chế độ sắp sẵn. Để xem các thay đổi trong vùng chế độ sắp sẵn, hãy chạy lệnh git diff với tùy chọn -staged. Lệnh này sẽ được sử dụng như sau:

[insert image here]

Lệnh trên sẽ hiển thị các thay đổi của các tệp đã được chuẩn bị. Xem kết quả sau:

[insert image here]

Kết quả trên hiển thị các thay đổi của newfile1.txt, đã được chuẩn bị.

Tình huống 3: Theo dõi các thay đổi sau khi cam kết

Git cho phép chúng ta theo dõi các thay đổi sau khi cam kết một tệp. Giả sử chúng ta cam kết một tệp vào kho lưu trữ và tiếp tục thực hiện một số thay đổi bổ sung sau khi cam kết. Vì vậy, chúng ta cũng có thể theo dõi tệp ở giai đoạn này.

Trong kết quả dưới đây, chúng ta đã cam kết các thay đổi mà chúng ta đã thực hiện vào tệp newfile1.txt mới của chúng ta. Xem kết quả sau:

[insert image here]

Bây giờ, chúng ta đã thay đổi tệp newfile.txt thành “các thay đổi được thực hiện sau khi tệp đã được cam kết”. Để theo dõi các thay đổi đối với tệp này, hãy chạy git diff với đối số head. Lệnh này sẽ hoạt động như sau:

[insert image here]

Lệnh trên hiển thị các cập nhật cho tệp newfile1.txt trong phần được đánh dấu.

Tình huống 4: Kiểm soát các thay đổi giữa các cam kết

Chúng ta có thể theo dõi những thay đổi giữa hai cam kết khác nhau. Git cho phép chúng ta theo dõi các thay đổi giữa hai lần cam kết, có thể là lần cam kết gần đây nhất hoặc lần cam kết trước đó. Tuy nhiên, chúng ta phải có một danh sách các cam kết để so sánh. Lệnh chung để liệt kê các cam kết là lệnh git log.

Để hiển thị các cam kết gần đây, chúng ta có thể chạy lệnh sau:

[insert image here]

Lệnh trên sẽ hiển thị danh sách các cam kết gần đây.

Giả sử, chúng ta muốn theo dõi các thay đổi đối với tệp từ lần cam kết trước đó. Để làm như vậy, chúng ta cần biết các cam kết của tệp đó. Để hiển thị các cam kết cho bất kỳ tệp nào, hãy chạy lệnh git log như sau:

[insert image here]

Lệnh trên sẽ hiển thị tất cả các cam kết cho một tệp cụ thể. Xem kết quả sau:

[insert image here]

Kết quả trên hiển thị tất cả các commit của newfile1.txt. Giả sử chúng ta muốn theo dõi những thay đổi giữa các commit 443aa53a0db6d933a0127033edf7a7e1624bc7c127f7ffc7a1c3f58892260dddb2a265e2bff85c46. Lệnh git diff cho phép theo dõi những thay đổi giữa hai lần commit. Nó sẽ được sử dụng như sau:

[insert image here]

Lệnh trên sẽ hiển thị những thay đổi giữa hai lần cam kết. Xem kết quả sau:

[insert image here]

Kết quả trên hiển thị tất cả các thay đổi đã được thực hiện trên newfile1.txt từ commit 443aa53a0db6d933a0127033edf7a7e1624bc7c1 (gần đây nhất) đến commit 27f7ffc7a1c3f58892260dddb2a265e2bff85c46 (trước đó).

1. Git diff giữa các nhánh

Git cho phép bạn so sánh các nhánh. Nếu bạn là một chuyên gia về phân nhánh, bạn sẽ hiểu tầm quan trọng của việc phân tích cú pháp các nhánh trước khi hợp nhất chúng. Nhiều xung đột có thể xảy ra nếu bạn hợp nhất một nhánh mà không kiểm tra trước. Do đó, để tránh những xung đột này, git cung cấp nhiều lệnh hữu ích để xem trước, so sánh và chỉnh sửa các thay đổi.

Chúng ta có thể theo dõi các thay đổi giữa các nhánh sử dụng lệnh git diff. Lệnh này cho phép chúng ta so sánh các phiên bản khác nhau của các nhánh và kho lưu trữ. Để xem sự khác biệt giữa các nhánh, hãy chạy lệnh git diff như sau:

[insert image here]

Lệnh trên sẽ hiển thị sự khác biệt giữa nhánh 1 và nhánh 2, giúp bạn quyết định liệu bạn có muốn hợp nhất nhánh hay không.

Kết quả trên cho thấy sự khác biệt giữa nhánh “test” trong kho lưu trữ của tôi và nhánh “test2”. Lệnh git diff cung cấp một cái nhìn trước của cả hai nhánh. Vì vậy, nó rất hữu ích khi thực hiện bất kỳ hoạt động nào trong các nhánh.

Dnulib là một trang web tài liệu hữu ích với nhiều tài liệu liên quan đến Git. Bạn có thể tìm hiểu chi tiết ở đây: Dnulib

Chúc bạn thành công trong việc học Git!