2011-01-19 37 views
31

Nếu tôi chạy 'status git' trên repo của tôi nó mang lại:git: Tại sao git diff không hiển thị bất kỳ sự khác biệt nào?

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: myfile 

Tuy nhiên, nếu tôi làm một 'git diff myfile' nó cho thấy không có sự khác biệt. Đây có phải là vì tôi đã thực hiện thay đổi và xóa nó để nó quay lại bản gốc không?

Tôi có nên chạy 'git checkout myfile' để xóa không?

Trả lời

49

Tệp của bạn đã được dàn dựng để được cam kết. Bạn có thể hiển thị sự khác biệt của nó bằng cách sử dụng tùy chọn --cached của git.

git diff --cached myfile 

Để unstage nó, chỉ cần làm những gì tình trạng git gợi ý trong đó là đầu ra;)

Bạn có thể kiểm tra The Git Index Để biết thêm thông.

+1

Điều này làm việc cho tôi nhưng chỉ sau khi tôi chạy "git add" trước tiên. Cảm ơn. –

5

Tôi có tùy chọn cho bí danh --staged, chủ yếu là vì tôi thấy rằng --staged thực sự có nghĩa là những gì tôi muốn làm, tức là chỉ cho tôi sự khác biệt theo giai đoạn.

git diff --staged 

Câu trả lời được chấp nhận là chính xác và tôi không có bất kỳ khiếu nại nào. Chỉ cần cá nhân nghĩ rằng --cached cảm thấy như git diff là bộ nhớ đệm câu trả lời và hiển thị cho tôi kết quả tính toán trước hoặc một cái gì đó.

Tôi cũng thích git diff HEAD vì nó tổng quát hơn. Nó đặt lại với nhau hai khái niệm mà nhiều người đã biết, đó là:

  1. git diff <commit> cho phép bạn thấy sự khác biệt giữa vị trí hiện tại của bạn và cam kết một trước.

  2. HEAD (hoặc head vì giữ phím shift gây phiền nhiễu) là tham chiếu đến đầu nhánh của bạn. (Đối với những người bạn là ai đếm tổ hợp phím, @ là một bí danh cho HEAD.)

kết hợp, hai khái niệm thường hữu ích cho kết quả:

git diff head 
git diff @ 
0

Đối Staging Diện tích vs so sánh Repository sử dụng

$git diff --staged 

Đối với công tác vs so sánh Repository sử dụng

$ git diff 

nhưng nếu tệp bị thay đổi và được thêm vào khu vực dàn dựng ($ git add fileName) và chúng tôi cố gắng thấy sự khác biệt với ($ git diff). Nó sẽ không trả về bất kỳ sự khác biệt nào vì tệp nằm trong vùng dàn dựng và nó sẽ không được so sánh với kho lưu trữ.

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