2010-07-30 28 views
97

Tôi đang sử dụng Git trên Ubuntu 10.04 (Lucid Lynx).Hiển thị sự khác biệt giữa các cam kết

Tôi đã thực hiện một số cam kết với chủ nhân của mình.

Tuy nhiên, tôi muốn có sự khác biệt giữa các cam kết này. Tất cả chúng đều nằm trong nhánh chủ của tôi.

Ví dụ:

commit dj374 
made changes 

commit y4746 
made changes 

commit k73ud 
made changes 

Tôi muốn nhận được sự khác biệt giữa k73ud và dj374. Tuy nhiên, khi tôi làm như sau tôi không thể thấy những thay đổi tôi đã thực hiện trong k73ud.

git diff k73ud..dj374 > master.patch 

Trả lời

101

Hãy thử

git diff k73ud^..dj374 

để đảm bảo bao gồm tất cả những thay đổi của k73ud trong diff kết quả.

git diff so sánh hai điểm cuối (instead of a commit range). Vì OP muốn xem các thay đổi được giới thiệu bởi k73ud, anh/cô ấy cần sự khác biệt giữa first parent commit of k73ud: k73ud^ (hoặc k73ud^1 or k73ud~).

Bằng cách đó, diff quả sẽ bao gồm những thay đổi kể từ khi k73ud mẹ (có nghĩa là bao gồm thay đổi từ k73ud chính nó), thay vì thay đổi giới thiệu từk73ud (lên đến dj374).

+1

Bạn có chắc chắn không? diff git 275e8922ab4e995f47a753b88b75c3027444a54c..a8d9d944c32e945cbb9f60b3f724ecc580da86ae hoạt động, nhưng git diff 275e8922ab4e995f47a753b88b75c3027444a54c^.. a8d9d944c32e945cbb9f60b3f724ecc580da86ae nhận được thông báo lỗi - "sửa đổi chưa được biết hoặc đường dẫn không trong cây làm việc" – demas

+0

@demas: hoạt động trên máy tính của tôi;) bạn cũng có thể sử dụng 'diff 275e8 git^a8d9d9' vì nó giống nhau '' .. ''. – VonC

+3

@VonC Trong máy của tôi, không cần sử dụng^ –

38

Nếu bạn muốn xem các thay đổi được giới thiệu với từng cam kết, hãy thử "git log -p"

9

tôi sử dụng gitk để thấy sự khác biệt:

gitk k73ud..dj374 

Nó có một chế độ GUI để xem xét dễ dàng hơn.

67

Để thấy sự khác biệt giữa:

bản sao của bạn làm việc và khu vực dàn dựng:

khu vực Staging
% git diff 

và cam kết mới nhất:

% git diff --staged 

bản sao làm việc của bạn và cam kết 4ac0a6733:

% git diff 4ac0a6733 
.210

Commit 4ac0a6733 và cam kết mới nhất:

% git diff 4ac0a6733 HEAD 

Commit 4ac0a6733 và cam 826793951

% git diff 4ac0a6733 826793951 

Đối với lời giải thích hơn thấy the official documentation.

+0

Tất cả các tình huống có thể xảy ra? –

+2

cũng có thể, nếu bạn thực sự chỉ muốn thấy một trong những tập tin khác biệt trong những cam kết đó, 'git diff {x} {y} - tên tệp' trong đó' {x} 'và' {y} 'là bất kỳ ví dụ nào được đưa ra. Xem thêm, 'git log -p', vì có một số chồng lên nhau. – michael

3

Để thấy sự khác biệt giữa hai cam kết khác nhau (chúng ta hãy gọi chúng ab), sử dụng

git diff a..b 
  • Lưu ý rằng sự khác biệt giữa ab là ngược lại từ ba.

Để thấy sự khác biệt giữa cam kết và không thay đổi cam kết chưa cuối cùng của bạn, sử dụng

git diff 

Nếu bạn muốn để có thể trở lại với phần chênh lệch sau, bạn có thể lưu nó trong một tập tin.

git diff a..b > ../project.diff 
8
  1. gitk --all
  2. Chọn người đầu tiên cam kết
  3. Nhấp chuột phải mặt khác, sau đó diff chọn → này
+0

Tôi bắt đầu tin tưởng gitk một chút ít hơn bởi vì nó cho thấy một tác giả khác nhau của cộng tác viên so với thực tế. –

-1

Sử dụng lệnh này cho sự khác biệt giữa cam kết và không được tổ chức:

git difftool --dir-diff 
Các vấn đề liên quan