"Tùy chọn" đặc biệt --
có nghĩa là "coi mọi đối số sau thời điểm này là một tên tệp, bất kể nó trông như thế nào." Đây không phải là Git cụ thể, nó là một quy ước dòng lệnh Unix chung. Thông thường, bạn sử dụng nó để làm rõ rằng một đối số là tên tệp chứ không phải là một tùy chọn , ví dụ:
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout
1 cũng có --
nghĩa là các đối số tiếp theo không phải là tham số "treeish" tùy chọn của nó chỉ định cam kết nào bạn muốn.
Vì vậy, trong bối cảnh này, bạn có thể sử dụng luôn an toàn--
, nhưng bạn cần nó khi tệp bạn muốn hoàn nguyên có tên bắt đầu bằng -
hoặc giống với tên của một nhánh. Một số ví dụ về định dạng nhánh / tệp:
git checkout README # would normally discard uncommitted changes
# to the _file_ "README"
git checkout master # would normally switch the working copy to
# the _branch_ "master"
git checkout -- master # discard uncommitted changes to the _file_ "master"
và tùy chọn / định dạng tệp:
git checkout -p -- README # interactively discard uncommitted changes
# to the file "README"
git checkout -- -p README # unconditionally discard all uncommitted
# changes to the files "-p" and "README"
Tôi không chắc bạn sẽ làm gì nếu bạn có một chi nhánh có tên bắt đầu bằng -
. Có lẽ đừng làm điều đó ngay từ đầu.
1 trong chế độ này; "checkout" cũng có thể làm một số việc khác. Tôi chưa bao giờ hiểu tại sao git lại chọn triển khai "loại bỏ các thay đổi chưa cam kết" như một chế độ của lệnh con "kiểm tra", thay vì "hoàn nguyên" như hầu hết các VCS khác, hoặc "đặt lại" mà tôi nghĩ có thể có ý nghĩa hơn theo các thuật ngữ riêng của git.