"Opsi" khusus --berarti "perlakukan setiap argumen setelah titik ini sebagai nama file, apa pun tampilannya." Ini bukan khusus Git, ini adalah konvensi baris perintah Unix umum. Biasanya Anda menggunakannya untuk mengklarifikasi bahwa argumen adalah nama file daripada opsi , mis
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout1 juga --berarti bahwa argumen berikutnya bukanlah parameter opsional "hierarki" yang menentukan komit mana yang Anda inginkan.
Jadi dalam konteks ini aman untuk digunakan --selalu, tetapi Anda membutuhkannya ketika file yang ingin Anda kembalikan memiliki nama yang dimulai dengan -, atau sama dengan nama cabang. Beberapa contoh untuk disambiguasi cabang / file:
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"
dan opsi / disambiguasi file:
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"
Saya tidak yakin apa yang Anda lakukan jika Anda memiliki cabang yang namanya dimulai dengan -. Mungkin jangan lakukan itu sejak awal.
1 dalam mode ini; "checkout" juga dapat melakukan beberapa hal lain. Saya tidak pernah mengerti mengapa git memilih untuk mengimplementasikan "discard uncommitted changes" sebagai mode subcommand "checkout", daripada "revert" seperti kebanyakan VCS lainnya, atau "reset" yang menurut saya mungkin lebih masuk akal dalam istilah git sendiri.