http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file
Saya telah menemukan postingan.
Tapi masih belum tahu apa bedanya
git checkout <filename>
git checkout -- <filename>
Dalam situasi apa saya harus menggunakan yang pertama dan kedua secara berurutan?
Jawaban:
"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 , misgit checkout
1 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:dan opsi / disambiguasi file:
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.
sumber
--
sebagai pemisah antara opsi dan argumen banyak diimplementasikan. Ia bekerja untuk semua program / utilitas yang menggunakan POSIXgetopt(3)
untuk menangani opsi baris perintahnya, (lihatman 3 getopt
), skrip-shell yang digunakangetopt(1)
, dan beberapa program yang mengimplementasikannya sendiri, tetapi tidak dijamin secara universal untuk bekerja.--
berarti 'meniadakan perubahan' a la C / C ++ - dan telah memikirkannya sejak itu. Pikiran meledak!Apa pun yang mengikuti
--
ini akan dianggap sebagai nama file (bukan sebagai argumen program). Ini penting jika, misalnya, Anda memiliki nama file yang dimulai dengan tanda hubung.sumber