Pada SVN, menghapus sesuatu dari sistem file secara langsung (daripada menggunakan svn) menciptakan banyak sakit kepala.
Saya belum menemukan ini menjadi masalah ketika menggunakan git
, tapi saya perhatikan bahwa git memiliki rm
implementasi sendiri ( git rm
).
Apa perbedaan antara rm
dan git rm
?
git reset --hard
dan kemudian melakukan checkout master untuk keluar dari keadaan kepala yang terpisah karena saya tahu saya tidak memiliki perubahan yang tidak dikomit. Jika Anda belum melakukan perubahan, Anda mungkin ingin melakukan git simpanan, tapi saya relatif baru untuk git jadi saya tidak tahu perintah yang tepat. Jika Anda datang ke sini pada atau setelah 2014, saya harap jawaban ini bermanfaat bagi Anda.rm
(bukangit rm
) dan menghapus banyak file yang menggunakannya, dan sekarang tidak ingingit
melacaknya. Apakah ada cara untuk mengembalikan perubahan? Saya ingingit
menginjak sayarm
sebagai dihapus karena saya tidak menggunakangit rm
di tempat pertama.Menghapus file menggunakan
rm
bukan masalah, tetapi jika Anda kemudian ingin melakukan bahwa file itu dihapus, Anda harusgit rm
tetap melakukan, jadi Anda mungkin melakukannya seperti itu langsung dari kelelawar.Selain itu, tergantung pada shell Anda, melakukan
git rm
setelah menghapus file, Anda tidak akan mendapatkan penyelesaian tab sehingga Anda harus menguraikan jalurnya sendiri, sedangkan jika Andagit rm
sementara file tersebut masih ada, penyelesaian tab akan berfungsi seperti biasa.sumber
git rm
akan menghapus file dari indeks dan direktori kerja (hanya indeks jika Anda menggunakan--cached
) sehingga penghapusan dipentaskan untuk komit berikutnya.sumber
Namun, jika Anda menggunakan rm alih-alih git rm. Anda dapat melewati git add dan langsung melakukan perubahan menggunakan:
git commit -a
sumber
Inilah cara Anda menghapus file menggunakan
rm -f
dan kemudian menghapusnya dari indeks Anda dengangit rm
Namun Anda dapat melakukan ini semua hanya dengan satu saja
git rm
sumber
Saat menggunakan git rm, penghapusan akan menjadi bagian dari komit Anda selanjutnya. Jadi, jika Anda ingin menekan perubahan Anda harus menggunakan git rm
sumber
Menambah jawaban Andy, ada utilitas tambahan untuk
git rm
:Keamanan : Saat melakukan
git rm
alih - alihrm
, Git akan memblokir penghapusan jika ada perbedaan antaraHEAD
versi file dan indeks pementasan atau versi pohon yang berfungsi. Blok ini adalah mekanisme keamanan untuk mencegah penghapusan perubahan yang sedang berlangsung.Pengamanan :
git rm --dry-run
. Opsi ini adalah perlindungan yang akan menjalankangit rm
perintah tetapi tidak benar-benar menghapus file. Sebaliknya itu akan menampilkan file mana yang akan dihapus.sumber