git diff là một tiện ích dòng lệnh. nó là một lệnh git mục đích chung. khi được thực thi, nó sẽ thực thi một chức năng khác trên git datasources. các nguồn dữ liệu này có thể là tệp, nhánh, cam kết và hơn thế nữa. được sử dụng để hiển thị các thay đổi giữa cam kết, cam kết và cây làm việc, v.v.
so sánh các phiên bản khác nhau của nguồn dữ liệu. hệ thống kiểm soát phiên bản có nghĩa là làm việc với phiên bản đã sửa đổi của tệp. vì vậy lệnh diff là một công cụ hữu ích để làm việc với git.
Tuy nhiên, chúng tôi cũng có thể theo dõi các thay đổi với sự trợ giúp của lệnh git log với tùy chọn -p. lệnh git log cũng sẽ 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: Để ý những thay đổi không có tổ chức.
sử dụng bình thường lệnh git diff mà chúng ta có thể theo dõi các thay đổi chưa chuẩn bị trước.
giả sử chúng tôi đã chỉnh sửa tệp newfile1.txt. bây giờ, chúng tôi muốn theo dõi những thay đổi chưa được thực hiện. vì vậy chúng ta có thể làm điều đó từ lệnh git diff. xem xét kết quả sau:
Nhấn phím q để thoát khỏi trình xem của diff. Các trình xem khác cũng tương tự nha ace.
Từ kết quả ở trên, chúng ta có thể thấy rằng các thay đổi được thực hiện đối với newfile1.txt được hiển thị bằng lệnh git diff. như chúng tôi đã 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 những thay đổi trong nội dung của nó. phần được đánh dấu của kết quả ở trên là các thay đổi đối với tệp được cập nhật. bây giờ, chúng tôi có thể quyết định xem chúng tôi có muốn phân đoạn tệp này như thế 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 đã diễn ra nhưng không được cam kết:
Lệnh git diff cho phép chúng tôi theo dõi các thay đổi được thực hiện nhưng không được cam kết. chúng ta có thể theo dõi những thay đổi trong khu vực tổ chức. Để xác minh các thay đổi trong các giai đoạn, hãy sử dụng tùy chọn -staged kết hợp với lệnh git diff.
Để kiểm tra các tệp chưa được theo dõi, hãy chạy trạng thái git như sau:
Lệnh trên sẽ hiển thị tệp mà không cần theo dõi tệp. bây giờ, chúng tôi sẽ thêm nó vào khu vực dàn dựng. Để thêm tệp vào vùng dàn dựng, hãy chạy lệnh git add dưới dạng:
Lệnh trên sẽ thêm tệp vào vùng dàn. xem xét kết quả sau:
Bây giờ, file được thêm vào khu vực dàn dựng, nhưng nó vẫn chưa được commit. Vì vậy, chúng ta cũng có thể theo dõi những thay đổi trong khu vực dàn dựng. Để kiểm tra các thay đổi theo giai đoạn, hãy chạy lệnh git diff cùng với tùy chọn -staged . Nó sẽ được sử dụng như:
Lệnh trên sẽ hiển thị các thay đổi của các tệp đã chuẩn bị. xem xét kết quả sau:
Đầu ra đã cho đang hiển thị các thay đổi của newfile1.txt, đã được dàn dựng.
Tình huống 3: Theo dõi các thay đổi sau khi xác nhận một tệp:
git, hãy để chúng tôi theo dõi các thay đổi sau khi cam kết một tệp. Giả sử chúng tôi cam kết một tệp vào kho lưu trữ và thực hiện một số thay đổi bổ sung sau khi cam kết. vì vậy chúng tôi cũng có thể theo dõi tệp ở giai đoạn này.
Trong kết quả đầu ra bên dưới, chúng tôi cam kết những thay đổi mà chúng tôi đã thực hiện đối với file1.txt mới của chúng tôi. xem xét kết quả sau:
Bây giờ, chúng tôi đã thay đổi tệp newfile.txt thành “các thay đổi được thực hiện sau khi tệp 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 . nó sẽ hoạt động như thế này:
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 tôi có thể theo dõi những thay đổi giữa hai cam kết khác nhau. git cho phép chúng tôi 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 đó. nhưng chúng tôi bắt buộc phải có một danh sách các cam kết để chúng tôi có thể so sánh. lệnh chung để liệt kê các cam kết trong 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:
Lệnh trên sẽ hiển thị danh sách các cam kết gần đây.
giả sử, chúng tôi muốn theo dõi các thay đổi đối với đơn đặt hàng kể từ lần cam kết trước. để làm như vậy, chúng ta cần các cam kết của tệp được chỉ định đó. Để hiển thị các cam kết cho bất kỳ thông số kỹ thuật nào, hãy chạy git log như sau:
Lệnh trên sẽ hiển thị tất cả các cam kết cho một tệp cụ thể. xem xét kết quả sau:
Kết quả ở trên đang 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 443aa53a0db6d933a0127033edf7a7e1624bc7c1 và 27f7ffc7a1c3f58892260dddb2a265e2bff85c46 . Lệnh git diff cho phép theo dõi những thay đổi giữa hai lần commit. Nó sẽ được lệnh như sau:
Lệnh trên sẽ hiển thị những thay đổi giữa hai lần cam kết. xem xét kết quả sau:
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 chi 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, thì bạn có thể 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ể phát sinh nếu bạn hợp nhất một nhánh mà không so sánh nó. do đó, để tránh những xung đột này, git cho phé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 tôi có thể theo dõi các thay đổi nhánh bằng lệnh git status, nhưng ít lệnh hơn có thể giải thích chi tiết. lệnh git diff là một công cụ được sử dụng rộng rãi để theo dõi các thay đổi.
Lệnh git diff cho phép chúng tôi so sánh các phiên bản khác nhau của các nhánh và kho lưu trữ. để có được sự khác biệt giữa các nhánh, hãy chạy lệnh git diff như sau:
Lệnh trên sẽ hiển thị sự khác biệt giữa nhánh 1 và nhánh 2, vì vậy bạn có thể quyết định xem mình 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 test các nhánh kho lưu trữ của tôi và test2 . lệnh git diff cung cấp bản xem trước của cả hai nhánh. vì vậy sẽ rất hữu ích khi thực hiện bất kỳ hoạt động nào trong các chi nhánh.
Cài đặt ứng dụng cafedev để dễ dàng cập nhật tin tức và học cách viết mã mọi lúc, mọi nơi tại đây.
tài liệu cafedev:
- hoàn thành chuỗi git theo nhịp độ từ cơ bản đến nâng cao tại đây.
- sách điện tử git tại đây.
- tài nguyên miễn phí là vô giá cafedev tại đây
Nếu thấy hay và hữu ích, bạn có thể tham gia các kênh cafedev sau để biết thêm:
- nhóm facebook
- trang người hâm mộ
- youtube
- trang chủ
xin chào và giành chiến thắng!