2013-06-21 23 views

Trả lời

54

Nếu bạn chưa thêm bất kỳ tập tin để chỉ số chưa (với git add), chỉ cần làm

git diff 

này sẽ hiển thị diff giữa cây làm việc của bạn và chỉ mục.

Nếu bạn đã thêm tệp vào chỉ mục, bạn cần thực hiện việc này để hiển thị sự khác biệt giữa chỉ mục và lần commit cuối cùng (HEAD).

git diff --cached 

Cuối cùng, nếu bạn muốn xem các thay đổi được thực hiện trong cây làm việc so với các mới nhất cam kết (HEAD) bạn có thể (như Carlos chỉ ra) làm

git diff HEAD 

Những thay đổi này là sự kết hợp của git diffgit diff --cached.

+1

'git diff' so sánh worktree với chỉ mục chứ không phải HEAD. –

+0

@ CarlosMartínNieto Bạn là đúng, thưa bạn. Tôi đã cải thiện bài đăng của mình để phản ánh điều này. –

+0

Tôi chạy nó, nhưng thiết bị đầu cuối, không kết thúc, làm thế nào tôi có thể thoát. không có gì hiệu quả. –

2

Bạn yêu cầu git phân biệt cam kết hiện tại/lần cuối, có ký hiệu viết tắt là HEAD.

Vì vậy, git diff HEAD sẽ so sánh trạng thái hiện tại của bảng tính với cam kết hiện tại.

1

điều này cũng cho thấy sự khác biệt và những tệp nào đã được thay đổi/sửa đổi.

$ git Status 

Hiển thị đường dẫn có sự khác biệt giữa các tập tin chỉ mục và các HEAD hiện cam kết, đường dẫn có sự khác nhau giữa cây làm việc và tập tin chỉ mục, và các đường dẫn trong cây làm việc mà không được theo dõi bởi git (và là không bị bỏ qua bởi gitignore (5)). Đầu tiên là những gì bạn sẽ cam kết bằng cách chạy lệnh git commit; thứ hai và thứ ba là những gì bạn có thể cam kết bằng cách chạy git add trước khi chạy git commit.

https://www.kernel.org/pub/software/scm/git/docs/git-status.html

8

Nếu bạn vừa thực hiện một cam kết, hoặc muốn xem những gì đã thay đổi trong cam kết cuối cùng so với tình trạng hiện tại (giả sử bạn có một cây làm việc sạch sẽ), bạn có thể sử dụng:

git diff HEAD^ 

Điều này sẽ so sánh HEAD với cam kết ngay trước đó. Một người cũng có thể làm

git diff HEAD^^ 

để so sánh với trạng thái chơi 2 cam kết trước đây. Để xem diff giữa nhà nước hiện hành và một số cam kết, chỉ đơn giản là làm:

git diff b6af6qc 

đâu b6af6qc là một ví dụ về một cam kết băm.

Các vấn đề liên quan