Saya perlu mengecualikan folder (nama unggah) dari pelacakan. Saya mencoba lari
git rm -r --cached wordpress/wp-content/uploads
dan setelah itu saya menambahkan path ke .gitignore
/wordpress/wp-content/uploads
tetapi ketika saya berlari git status
mereka muncul sebagai dihapus. Jika saya mencoba melakukan perubahan, file akan dihapus, tidak hanya dihapus dari pelacakan.
Apa yang saya lakukan salah?
Saya juga sudah mencoba
git update-index --assume-unchanged <file>
tapi ini sepertinya hanya mengurai file. Tapi saya perlu menghapus seluruh folder (termasuk subfolder) dari pelacakan.
reset --hard
, itu akan.pull
yang melakukan di tempat lain file-file itu akan dihapus dari sistem baru.Jawaban:
Saya menemukan pertanyaan ini ketika mencari Google untuk "git remove folder from tracking". Pertanyaan OP membawa saya ke jawabannya. Saya merangkumnya di sini untuk generasi mendatang.
Pertanyaan
Bagaimana cara menghapus folder dari repositori git saya tanpa menghapusnya dari mesin lokal saya (yaitu, lingkungan pengembangan)?
Menjawab
Langkah 1. Tambahkan path folder ke
.gitignore
file root repo Anda .Langkah 2. Hapus folder dari pelacakan git lokal Anda, tetapi simpan di disk Anda.
Langkah 3. Dorong perubahan Anda ke repo git Anda.
Folder tersebut akan dianggap "dihapus" dari sudut pandang Git (yaitu mereka berada dalam sejarah masa lalu, tetapi tidak dalam komit terbaru, dan orang-orang yang menarik dari repo ini akan mendapatkan file dihapus dari pohon mereka), tetapi tetap di direktori kerja Anda karena kamu sudah menggunakan
--cached
.sumber
Ini bekerja untuk saya:
--ignore-unmatch
penting di sini, tanpa opsi itu git akan keluar dengan kesalahan pada file pertama yang tidak ada dalam indeks.sumber
unknown option 'ignore unmatched'
git rm -r --cached --ignore-unmatch .idea/*.xml
Untuk melupakan direktori, tambahkan
/*/*
ke jalur secara rekursif :Penggunaan
git rm --cached
tidak baik untuk kolaborasi. Lebih detail di sini: Bagaimana cara menghentikan pelacakan dan mengabaikan perubahan pada file di Git?sumber
Saya tahu ini adalah utas lama tetapi saya hanya ingin menambahkan sedikit karena solusi yang ditandai tidak menyelesaikan masalah bagi saya (walaupun saya mencoba berkali-kali).
Satu-satunya cara saya benar-benar bisa menghentikan git form melacak folder adalah dengan melakukan hal berikut:
git rm -r --cached your_folder/
your_folder/
ke .gitignoreAnda seharusnya sekarang melihat bahwa folder tidak lagi dilacak.
Jangan tanya saya mengapa membersihkan cache saja tidak berhasil, saya bukan penyihir super Git, tetapi inilah cara saya memecahkan masalah.
sumber
Dari dokumentasi git:
Hal lain yang berguna yang mungkin ingin Anda lakukan adalah menyimpan file di pohon kerja Anda tetapi menghapusnya dari area pementasan Anda. Dengan kata lain, Anda mungkin ingin menyimpan file di hard drive Anda tetapi tidak memiliki Git melacaknya lagi. Ini sangat berguna jika Anda lupa menambahkan sesuatu ke file .gitignore Anda dan secara tidak sengaja mementaskannya, seperti file log besar atau sekelompok file .a yang dikompilasi. Untuk melakukan ini, gunakan opsi --cached:
Jadi mungkin tidak termasuk "-r"?
sumber
--cached
. The-r
pilihan adalah untuk "recursive", yang harus dimasukkan dalam hal ini.