Làm thế nào để so sánh hai thẻ với git?


435

Tôi muốn thực hiện một khác biệt giữa hai thẻ và thay đổi cam kết giữa hai thẻ đó. Bạn có thể vui lòng cho tôi biết lệnh?

Câu trả lời:


744
$ git diff tag1 tag2

hoặc hiển thị nhật ký giữa chúng:

$ git log tag1..tag2

đôi khi có thể thuận tiện khi chỉ xem danh sách các tệp đã được thay đổi:

$ git diff tag1 tag2 --stat

và sau đó xem xét sự khác biệt cho một số tệp cụ thể:

$ git diff tag1 tag2 -- some/file/name

Thẻ chỉ là một tham chiếu đến cam kết mới nhất 'trên thẻ đó', do đó bạn đang thực hiện một khác biệt về các cam kết giữa chúng.

Ngoài ra, một tài liệu tham khảo tốt: http://learn.github.com/p/diff.html


2
@kaiser lol! btw, tôi muốn thêm mẹo này để so sánh toàn bộ thư mục từ bên trong git guitại "tools / add" như thế nào git difftool -d $REVISION! và để liên kết câu trả lời này nữa
Sức mạnh của Bảo Bình

Có cách nào để làm cho git loglệnh chỉ hiển thị các xác nhận bổ sung, không chia sẻ các cam kết không?
CMCDragonkai

@CMCDragonkai đó là những gì lệnh này thực hiện, nó hiển thị các xác nhận bổ sung trên tag2 kể từ tag1.
gauteh

2
Cũng hữu ích: chỉ đơn giản là git diff tag1cung cấp sự khác biệt giữa tag1 và thư mục làm việc; git diff tag1 HEADsự khác biệt giữa tag1 và cam kết gần đây nhất.
ChrisV

4
Hãy chắc chắn để làm git pull --tagsđầu tiên.
edburns


2

Đối với biểu diễn trực quan cạnh nhau, tôi sử dụng git difftoolvới openDiffcài đặt thành trình xem mặc định.

Ví dụ sử dụng:

git difftool tags/<FIRST TAG> tags/<SECOND TAG>

Nếu bạn chỉ quan tâm đến một tệp cụ thể, bạn có thể sử dụng:

git difftool tags/<FIRST TAG>:<FILE PATH> tags/<SECOND TAG>:<FILE PATH>

Là một lưu ý phụ, tags/<TAG>s có thể được thay thế bằng <BRANCH>es nếu bạn quan tâm đến diffcác nhánh ing.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.