Saya memiliki repositori git yang di-host di Github. Setelah melakukan banyak file, saya menyadari bahwa saya harus membuat .gitignore
dan belum termasuk .exe
, .obj
file.
Namun, apakah ini akan secara otomatis menghapus file-file ini dari repositori? Apakah ada cara untuk memaksanya?
Jawaban:
Tidak, Anda tidak dapat memaksa file yang sudah dikomit dalam repo untuk dihapus hanya karena ditambahkan ke
.gitignore
Anda harus
git rm --cached
menghapus file yang tidak Anda inginkan dalam repo. (--cached karena Anda mungkin ingin menyimpan salinan lokal tetapi menghapus dari repo.) Jadi jika Anda ingin menghapus semua exe dari repo Anda lakukan(Perhatikan bahwa tanda bintang * dikutip dari shell - ini memungkinkan git, dan bukan shell, perluas nama path file dan subdirektori)
sumber
git rm /\*.exe
akan menghapus semua exe di repo Andagit
.git pull
akan melihat file mereka dihapus.Tidak. Bahkan dengan yang sudah ada,
.gitignore
Anda dapat mengatur file "diabaikan" dengan-f
bendera (paksa). Jika file mereka sudah dikomit, mereka tidak bisa dihapus secara otomatis.sumber
Jika Anda belum mendorong perubahan:
sumber
Saya harus menghapus .idea dan folder target dan setelah membaca semua komentar ini berhasil bagi saya:
dan kemudian dorong untuk menguasai
sumber
.idea
adalah masalah saya, saya kira itu juga milik Anda:)
Tidak.
Resep 'terbaik' untuk melakukan ini adalah menggunakan
git filter-branch
seperti yang tertulis di sini:Halaman manual untuk git-filter-branch berisi contoh komprehensif.
Catatan Anda akan menulis ulang riwayat. Jika Anda telah menerbitkan revisi apa pun yang berisi file yang ditambahkan secara tidak sengaja, ini dapat membuat masalah bagi pengguna cabang publik tersebut. Beri tahu mereka, atau mungkin pikirkan seberapa buruk Anda perlu menghapus file.
Catatan Di hadapan tag, selalu gunakan
--tag-name-filter cat
opsi untukgit filter-branch
. Tidak pernah sakit dan akan menyelamatkan Anda dari sakit kepala ketika Anda menyadari nanti bahwa Anda membutuhkannyasumber
--all
untuk menulis ulang semua cabang (lokal) sekaligusBahkan setelah Anda menghapus file dan kemudian melakukan, Anda masih akan memiliki file-file itu dalam sejarah. Untuk menghapusnya, pertimbangkan menggunakan BFG Repo-Cleaner . Ini adalah alternatif untuk git-filter-branch.
sumber