Tùy chọn "đặc biệt" --
có nghĩa là "xử lý mọi đối số sau thời điểm này dưới dạng tên tệp, bất kể nó như thế nào." Đây không phải là Git cụ thể, nó là một quy ước dòng lệnh chung của Unix. Thông thường, bạn sử dụng nó để làm rõ rằng đối số là tên tệp chứ không phải là tùy chọn , ví dụ:
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout
cũng mất --
để có nghĩa là lập luận tiếp theo không phải là tùy chọn "treeish" tham số nêu rõ nó mà cam kết mà bạn muốn.
Vì vậy, trong bối cảnh này nó an toàn sử dụng --
mọi khi, nhưng bạn cần nó khi tập tin bạn muốn trở lại có một cái tên bắt đầu với -
, hoặc là giống như tên của một chi nhánh. Một số ví dụ cho chi nhánh/tập tin định hướng:
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/tập tin định hướng:
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 chắn những gì bạn làm gì nếu bạn có một chi nhánh có tên bắt đầu bằng -
. Có lẽ không làm điều đó ngay từ đầu.
ở chế độ này; "checkout" cũng có thể thực hiện một số việc khác. Tôi chưa bao giờ hiểu lý do tại sao git chọn triển khai "loại bỏ các thay đổi không được cam kết" như một chế độ của tiểu mục "thanh toán", thay vì "hoàn nguyên" giống 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 trong các thuật ngữ riêng của git.
Xem thêm [Ý nghĩa của dấu gạch ngang kiểm tra Git] (http://stackoverflow.com/q/13321458/456814). –