Có, nhưng nó phụ thuộc một chút vào định nghĩa của bạn về "trạng thái dự án hiện tại" là gì. Hướng dẫn cho git diff tiếp tục.
Nếu bạn quan tâm đến việc so sánh với dàn dựng thay đổi:
git diff [--options] --cached [<commit>] [--] [<path>...]
Hình thức này là để xem những thay đổi bạn dàn dựng cho tới cam kết liên quan đến các tên <commit>
. Thông thường, bạn sẽ muốn so sánh với cam kết mới nhất, vì vậy nếu bạn không cung cấp cho <commit>
, giá trị mặc định là HEAD. Nếu HEAD không tồn tại (ví dụ: các chi nhánh chưa sinh) và <commit>
không được cung cấp, nó sẽ hiển thị tất cả các thay đổi theo giai đoạn. --staged
là một từ đồng nghĩa của --cached
.
Nếu bạn quan tâm đến việc so sánh với unstaged thay đổi:
git diff [--options] <commit> [--] [<path>...]
Hình thức này là để xem các thay đổi mà bạn có trong cây làm việc của bạn liên quan đến các tên <commit>
. Bạn có thể sử dụng HEAD để so sánh nó với cam kết mới nhất hoặc tên chi nhánh để so sánh với đầu của một nhánh khác.
Hoặc nếu bạn chỉ quan tâm đến việc so sánh bất kỳ hai cam kết (có thể là một HEAD):
git diff [--options] <commit> <commit> [--] [<path>...]
Điều này là để xem các thay đổi giữa hai tùy <commit>
s.
Vì vậy, bạn có thể muốn chạy git diff someOldCommit HEAD
để xem sự khác biệt giữa someOldCommit
và HEAD hiện tại.
Bởi "trạng thái dự án hiện tại" Tôi đã đề cập đến thư mục làm việc, tôi biết điều đó có chút khuếch tán. Tôi đã cập nhật câu hỏi của mình. – HelloGoodbye
Cảm ơn câu trả lời. Vì vậy, 'git diff [--options] [-] [ ...] 'là những gì tôi đang tìm kiếm. Trong trường hợp của tôi, vì tôi không cần phải sử dụng bất kỳ tùy chọn nào, và tôi chỉ cần nhận được sự khác biệt trong đường dẫn hiện tại, cho tôi điều này giảm xuống 'git diff . ' –
HelloGoodbye
Hoặc, vì tôi muốn phân biệt toàn bộ kho lưu trữ và tôi không được bảo đảm nằm trong thư mục cấp cao nhất, tôi sẽ cần 'git diff'. Từ một kịch bản lệnh này sẽ là 'git diff " $ (git rev-parse --show-toplevel) "'. –
HelloGoodbye