Saya telah menambahkan file dengan nama "file1.txt"
repositori Git. Setelah itu, saya komit, menambahkan beberapa direktori yang dipanggil dir1
dan dir2
, dan komit pada repositori Git.
Sekarang repositori saat ini memiliki "file1.txt"
, dir1
, dan dir2
. Bagaimana saya bisa menghapus "file1.txt"
tanpa mempengaruhi orang lain, suka dir1
dan dir2
?
git rm
adalah jawaban yang tepat, tetapi ingat bahwa file tersebut akan tetap ada dalam sejarah. Jika Anda ingin menghapus file karena memiliki informasi sensitif, Anda harus melakukan sesuatu yang lebih drastis. (Mengubah sejarah, terutama untuk konten yang sudah Anda dorong, adalah tindakan drastis, dan harus dihindari jika mungkin.)Jawaban:
Gunakan
git rm
.Jika Anda ingin menghapus file dari repositori Git dan sistem file , gunakan:
Tetapi jika Anda ingin menghapus file hanya dari repositori Git dan tidak menghapusnya dari sistem file, gunakan:
Dan untuk mendorong perubahan ke repo jarak jauh
sumber
git rm file.txt
menghapus file dari repo tetapi juga menghapusnya dari sistem file lokal .Untuk menghapus file dari repo dan tidak menghapusnya dari sistem file lokal, gunakan:
git rm --cached file.txt
Situasi tepat di bawah ini adalah di mana saya menggunakan git untuk mempertahankan kontrol versi untuk situs web bisnis saya, tetapi direktori "mickey" adalah folder tmp untuk berbagi konten pribadi dengan pengembang CAD. Ketika dia membutuhkan file-file BESAR, saya membuat direktori pribadi yang tidak terhubung dan menambahkan file-file di sana untuk diambilnya melalui browser. Lupa saya melakukan ini, saya kemudian melakukan
git add -A
dari direktori dasar situs web. Selanjutnya,git status
menunjukkan file baru yang perlu dikomit. Sekarang saya perlu menghapusnya dari pelacakan git dan kontrol versi ...Contoh output di bawah ini berasal dari apa yang baru saja terjadi pada saya, di mana saya tidak sengaja menghapus
.003
file. Untungnya, saya tidak peduli apa yang terjadi pada salinan lokal.003
, tetapi beberapa file yang saat ini berubah adalah pembaruan yang baru saja saya buat ke situs web dan akan epik telah dihapus pada sistem file lokal! "Sistem file lokal" = situs web langsung (bukan praktik yang hebat, tetapi kenyataan) .Pembaruan: Jawaban ini mendapatkan lalu lintas, jadi saya pikir saya akan menyebutkan jawaban Git saya yang lain membagikan beberapa sumber daya hebat: Halaman ini memiliki grafik yang membantu menghilangkan mitos Git bagi saya. Buku "Pro Git" sedang online dan banyak membantu saya.
sumber
git commit -m "Just removing file1.txt"
dan kemudian, jika Anda memiliki repositori jarak jauh, dorong komit dengan sesuatu sepertigit push origin master
.Pertama, jika Anda menggunakan
git rm
, terutama untuk banyak file, pertimbangkan wildcard apa saja yang akan diselesaikan oleh shell, bukan olehgit
perintah.Tapi, jika file Anda sudah ada di GitHub, Anda bisa (sejak Juli 2013) langsung menghapusnya dari GUI web!
Lalu "
git pull
" pada repo lokal Anda, dan itu akan menghapus file secara lokal juga.Yang membuat jawaban ini cara (bundaran) untuk menghapus file dari git repo?
(Belum lagi bahwa file di GitHub adalah dalam "repo git")
(komit akan mencerminkan penghapusan file itu):
Kalimat terakhir berarti bahwa file yang dihapus masih merupakan bagian dari sejarah, dan Anda dapat memulihkannya dengan cukup mudah (tetapi belum melalui antarmuka web GitHub):
Lihat " Kembalikan file yang dihapus di repo Git ".
sumber
Ini adalah satu-satunya opsi yang berfungsi untuk saya.
Catatan: Ganti * .sql dengan nama file atau tipe file Anda. Berhati-hatilah karena ini akan melalui setiap komit dan rip tipe file ini.
SUNTING: perhatikan - setelah perintah ini Anda tidak akan bisa mendorong atau menarik - Anda akan melihat penolakan 'riwayat tidak terkait' Anda bisa menggunakan 'git push - force -u origin master' untuk mendorong atau menarik
sumber
git push --force -u origin master
Selain itu, jika itu folder yang akan dihapus dan folder atau file anak berikutnya, gunakan:
sumber
Use git rm --cached -r <foldername>
Secara lebih umum,
git help
akan membantu dengan setidaknya pertanyaan sederhana seperti ini:sumber
git help
bingung, tapi bagus untuk hal-hal sederhana :)rm
bertahap file untuk dihapus daripada menghapus dari indeks (meskipun masih berarti untuk noobs).Jika Anda ingin menghapus file dari repo, tetapi biarkan di sistem file (tidak akan dilacak):
Jika Anda ingin menghapus file dari repo dan dari sistem file maka ada dua opsi:
Jika file tidak memiliki perubahan yang dipentaskan dalam indeks:
Jika file memiliki perubahan yang dipentaskan dalam indeks:
sumber
git rm
hanya akan menghapus file pada cabang ini mulai sekarang, tetapi file itu masih ada dalam sejarah dan git akan mengingatnya.Cara yang tepat untuk melakukannya adalah dengan
git filter-branch
, seperti yang disebutkan orang lain di sini. Ini akan menulis ulang setiap komit dalam sejarah cabang untuk menghapus file itu.Tetapi, bahkan setelah melakukan itu, git dapat mengingatnya karena bisa ada referensi padanya di reflog, remote, tag dan semacamnya.
Jika Anda ingin sepenuhnya menghapusnya dalam satu langkah, saya sarankan Anda untuk menggunakannya
git forget-blob
https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/
Itu mudah, lakukan saja
git forget-blob file1.txt
.Ini akan menghapus setiap referensi, melakukan
git filter-branch
, dan akhirnya menjalankan pengumpul sampah gitgit gc
untuk sepenuhnya menyingkirkan file ini di repo Anda.sumber
Cara lain jika Anda ingin menghapus file dari folder lokal Anda menggunakan perintah rm dan kemudian mendorong perubahan ke server jauh.
sumber
Catatan: jika Anda ingin menghapus file hanya dari git, gunakan di bawah ini:
Jika Anda ingin menghapus juga dari hard disk:
Jika Anda ingin menghapus folder (folder tersebut mungkin berisi beberapa file), Anda harus menghapus menggunakan perintah rekursif, seperti di bawah ini:
Jika Anda ingin menghapus folder di dalam folder lain
Kemudian, Anda bisa
commit
danpush
seperti biasa. Namun, jika Anda ingin memulihkan folder yang dihapus, Anda dapat mengikuti ini: memulihkan file yang dihapus dari git dimungkinkan.Baca lebih lanjut tentang dokumen resmi.
sumber
Untuk menghapus file tertentu
Untuk membersihkan semua file yang tidak terlacak dari direktori secara rekursif dalam satu pemotretan
sumber
Jika Anda memiliki aplikasi GitHub untuk Windows, Anda dapat menghapus file dalam 5 langkah mudah:
sumber
Dalam kasus saya, saya mencoba untuk menghapus file di github setelah beberapa melakukan tetapi simpan di komputer
dan kemudian file ini diabaikan
sumber
Pertama, Hapus file dari repositori lokal.
atau, hapus file hanya dari repositori lokal tetapi dari sistem file
Kedua, Komit berubah menjadi repositori lokal.
Akhirnya, perbarui / dorong perubahan lokal ke repositori jarak jauh.
sumber
Saya mencoba banyak opsi yang disarankan dan tampaknya tidak ada yang berhasil (saya tidak akan mencantumkan berbagai masalah). Apa yang akhirnya saya lakukan, yang berhasil, sederhana dan intuitif (bagi saya) adalah:
sumber
Setelah Anda menghapus file dari repo dengan
git rm
Anda dapat menggunakan BFG Repo-Cleaner untuk sepenuhnya dan mudah menghapus file dari sejarah repo.sumber
Saya memiliki file obj dan bin yang secara tidak sengaja masuk ke dalam repo yang saya tidak ingin mencemari daftar 'file yang diubah'
Setelah saya perhatikan mereka pergi ke remote, saya mengabaikan mereka dengan menambahkan ini
.gitignore
Masalahnya adalah mereka sudah di remote, dan ketika mereka berubah, mereka muncul sebagai diubah dan mencemari daftar file yang diubah.
Untuk berhenti melihatnya, Anda perlu menghapus seluruh folder dari repositori jarak jauh.
Dalam prompt perintah:
C:\repos\MyRepo
)C:\repos\MyRepo\SSIS
)git rm -r -f obj
git commit -m "remove obj folder"
Saya mendapat pesan yang mengkhawatirkan 13 file berubah 315.222 penghapusan
Kemudian karena saya tidak ingin harus mencari garis CMD, saya pergi ke Visual Sstudio dan melakukan Sinkronisasi untuk menerapkannya ke remote
sumber
Jika Anda perlu menghapus file dari ekstensi yang ditentukan (misalnya, file yang dikompilasi), Anda dapat melakukan hal berikut untuk menghapus semuanya sekaligus:
sumber
Menurut dokumentasi .
git rm --cached giant_file
Ketika datang ke data sensitif — lebih baik tidak mengatakan bahwa Anda menghapus file tetapi hanya memasukkannya dalam komit yang terakhir diketahui:
0. Ubah komit terakhir
Jika Anda ingin menghapus file dari semua riwayat git, menurut dokumentasi Anda harus melakukan hal berikut:
1. Hapus dari riwayat lokal Anda
3. Jika Anda perlu menghapus dari remote
4. Jika Anda juga perlu menghapusnya dari rilis tag:
sumber
Jika Anda tidak mengajukan dalam repo lokal Anda tetapi dalam git repo, maka cukup buka file dalam git repo melalui antarmuka web dan temukan tombol Hapus di sudut kanan dalam antarmuka. Klik Di Sini, Untuk melihat Opsi Hapus antarmuka
sumber