Git diff là một tiện ích dòng lệnh. Đó là một lệnh Git đa dụng. Khi nó được thực thi, nó sẽ chạy một chức năng khác trên các nguồn dữ liệu Git. Các nguồn dữ liệu này có thể là file, nhánh, commit và hơn thế nữa. Nó được sử dụng để hiển thị các thay đổi giữa các commit, commit và cây làm việc, v.v.
Nó so sánh các phiên bản khác nhau của các nguồn dữ liệu. Hệ thống kiểm soát phiên bản là viết tắt của việc làm việc với phiên bản đã sửa đổi của file. 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 ta 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.
Cùng tìm hiểu 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 những thay đổi chưa được dàn dựng.
Việc sử dụng thông thường của lệnh git diff mà chúng ta có thể theo dõi các thay đổi chưa được dàn dựng.
Giả sử chúng ta đã chỉnh sửa file newfile1.txt. Bây giờ, chúng ta muốn theo dõi những thay đổi nào chưa được thực hiện. Sau đó, chúng ta có thể làm như vậy từ lệnh git diff. Hãy xem xét đầu ra dưới đây:
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 trên newfile1.txt được hiển thị bằng lệnh git diff. Như chúng ta đã chỉnh sửa nó là “các thay đổi được thực hiện để hiểu lệnh git diff.” Vì vậy, đầu ra đang hiển thị những thay đổi với nội dung của nó. Phần được đánh dấu của kết quả ở trên là những thay đổi trong file được cập nhật. Bây giờ, chúng ta có thể quyết định xem chúng ta có muốn phân đoạn file này như thế này hay không bằng cách xem trước các thay đổi.
Tình huống 2: Theo dõi những thay đổi đã diễn ra nhưng không được commit:
Lệnh git diff cho phép chúng ta theo dõi các thay đổi được thực hiện nhưng không được commit. Chúng ta có thể theo dõi những thay đổi trong khu vực dàn dựng. Để kiểm tra các thay đổi đã được dàn dựng, hãy sử dụng tùy chọn –staged cùng với lệnh git diff.
Để kiểm tra file chưa được theo dõi, hãy chạy lệnh git status như sau:
git status
Lệnh trên sẽ hiển thị file chưa được theo dõi từ kho lưu trữ. Bây giờ, chúng ta sẽ thêm nó vào khu vực dàn dựng. Để thêm file vào vùng dàn, hãy chạy lệnh git add dưới dạng:
git add <tên file>
Lệnh trên sẽ thêm file trong vùng dàn. Hãy xem xét đầu ra dưới đây:
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ư:
git diff --staged
Lệnh trên sẽ hiển thị các thay đổi của các file đã được dàn dựng. Hãy xem xét đầu ra dưới đây:
Đầ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 commit một file:
Git, hãy để chúng ta theo dõi những thay đổi sau khi commit một file. Giả sử chúng ta đã commit một file cho kho lưu trữ và thực hiện một số thay đổi bổ sung sau khi commit. Vì vậy, chúng ta cũng có thể theo dõi file trong giai đoạn này.
Trong đầu ra bên dưới, chúng ta đã commit những thay đổi mà chúng ta đã thực hiện trên newfile1.txt của mình. Hãy xem xét đầu ra dưới đây:
Bây giờ, chúng ta đã thay đổi lại file newfile.txt là “Các thay đổi được thực hiện sau khi commit file.” Để theo dõi các thay đổi của file này, hãy chạy lệnh git diff với đối số HEAD . Nó sẽ chạy như sau:
git diff HEAD
Lệnh trên đang hiển thị các bản cập nhật của file newfile1.txt trên phần được đánh dấu.
Tình huống 4: Theo dõi những thay đổi giữa hai lần commit:
Chúng ta có thể theo dõi những thay đổi giữa hai commit khác nhau. Git cho phép chúng ta theo dõi các thay đổi giữa hai lần commit, cho dù đó là lần commit mới nhất hay lần commit cũ. Nhưng điều bắt buộc cho việc này là chúng ta phải có một danh sách các commit để chúng ta có thể so sánh. Lệnh thông thường để liệt kê các commit trong lệnh git log. Để hiển thị các commit gần đây, chúng ta có thể chạy lệnh như sau:
git log
Lệnh trên sẽ liệt kê các commit gần đây.
Giả sử, chúng ta muốn theo dõi các thay đổi của một chỉ định từ một commit trước đó. Để làm như vậy, chúng ta phải cần các commit của file được chỉ định đó. Để hiển thị các commit của bất kỳ được chỉ định nào, hãy chạy lệnh git log như sau:
git log -p --follow - tên file
Lệnh trên sẽ hiển thị tất cả các commit của một file được chỉ định. Hãy xem xét đầu ra dưới đây:
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:
git diff <commit1-sha> <commit2-sha>
Lệnh trên sẽ hiển thị các thay đổi giữa hai lần commit. Hãy xem xét đầu ra dưới đây:
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. Các nhánh Git Diff
Git cho phép so sánh các nhánh. Nếu bạn là một bậc thầy 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ác nhánh trước khi hợp nhất. Nhiều xung đột có thể phát sinh nếu bạn hợp nhất chi nhánh mà không so sánh nó. Vì vậy, để tránh những xung đột này, Git cho phép nhiều lệnh tiện dụng để 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 của 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 ta 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:
git diff <nhánh 1 > <nhánh 2 >
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 bạn có muốn hợp nhất nhánh hay không.
Kết quả ở trên hiển thị sự khác biệt giữa thử nghiệm các nhánh kho lưu trữ của tôi và test2 . Lệnh git diff đang đưa ra 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ỳ thao tác nào trên các nhánh.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Tài liệu từ cafedev:
- Full series tự học Git từ cơ bản tới nâng cao tại đây nha.
- Ebook về Git tại đây.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!