git - khác biệt của các thay đổi hiện tại trước khi cam kết


106

Tôi đã thay đổi một số tệp trong kho lưu trữ git, nhưng vẫn chưa cam kết chúng.

Tôi có thể nhận được danh sách các thay đổi bằng cách gọi git status. Nhưng làm cách nào để có được danh sách các dòng hoặc nội dung mà tôi đã thay đổi, ngoài tên tệp?

Ban đầu tôi nghĩ về việc sử dụng git diff , nhưng nó dường như chỉ hữu ích để so sánh các thay đổi đã được cam kết.

Thông thường tôi chỉ làm vậy meld ., nhưng trong trường hợp này, tôi đã kết nối với máy chủ bên ngoài qua ssh.

Câu trả lời:


153

git difftheo mặc định cho thấy sự khác biệt giữa thư mục làm việc của bạn và chỉ mục ( khu vực dàn dựng cho lần cam kết tiếp theo).

Nếu bạn đã thêm ( giai đoạn ) các thay đổi vào khu vực giai đoạn , git diff --stagedcông việc sẽ diễn ra. Khu vực giai đoạn là dữ liệu mà từ đó cam kết tiếp theo sẽ được hình thành git commit.

PS Đọc tốt (IMO) cho người mới bắt đầu Git:


Không phải theo giai đoạn chỉ áp dụng cho các tệp chưa được thêm vào? Nghĩ rằng bạn phải sử dụng cờ được lưu trong bộ nhớ cache.
pbond

4
@peterbond man git-diffnói--staged is a synonym of --cached
Mischa Arefiev

2
@peterbond Về mặt kỹ thuật được dàn dựng nghĩa là được thêm vào vùng dàn dựng chưa phải là một cam kết. Tôi đã làm rõ điều đó trong bản chỉnh sửa.
Mischa Arefiev

1
@Mischa Các tài liệu nói rằng hành vi mặc định cho git difflà để tính toán sự khác biệt giữa các thư mục làm việc và chỉ số , khôngHEAD
Axel

Tôi không xảy ra khi gọi git diff mà không có tham số. Cảm ơn!
kikito

10

Những gì tôi sử dụng cho những trường hợp như vậy là:

git diff HEAD *

Điều này sẽ hiển thị các thay đổi kể từ lần cam kết cuối cùng. Mặc dù bằng cách nào đó nó hoạt động nhanh hơn với

git diff .

hoặc là

git diff

Để xem các thay đổi trên các git addtệp đã chỉnh sửa trước đó , hãy sử dụng stagedcờ:

git diff --staged
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.