Bagaimana cara menghapus direktori dari repositori git?
1236
Saya memiliki 2 direktori pada repositori GitHub saya. Saya ingin menghapus salah satunya. Bagaimana saya bisa melakukan itu tanpa menghapus dan menciptakan kembali seluruh repositori?
@Iarsmans: Ya 6 file. Kedua direktori identik kecuali satu huruf besar, yang lain adalah huruf kecil.
Sahat Yalkabov
Jawaban:
2328
Hapus direktori dari git dan lokal
Anda dapat checkout 'master' dengan kedua direktori;
git rm -r one-of-the-directories // This deletes from filesystem
git commit . -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
Hapus direktori dari git tetapi BUKAN lokal
Seperti disebutkan dalam komentar, apa yang biasanya ingin Anda lakukan adalah menghapus direktori ini dari git tetapi tidak menghapusnya sepenuhnya dari sistem file (lokal)
Saya memiliki situasi yang persis sama. Ketika saya mencoba git rm -r myFolderitu berhasil, tetapi juga menghapus semuanya dari direktori "MyFolder". Harus mengembalikan semua yang ada di direktori "MyFolder" dan kemudian melakukan.
Justin
240
@Justin Untuk hanya menghapus dari git dan membiarkan filesystem apa adanya, gunakangit rm -r --cached myFolder
karmakaze
32
Pesan kesalahan yang saya dapatkan adalah: fatal: pathspec 'direktori' tidak cocok dengan file apa pun.
user2441441
3
@ user2441441 Saya memiliki kesalahan ini muncul ketika saya mencoba untuk menghapus folder / file yang tidak ditambahkan ke repo sama sekali
lukeatdesignworks
3
git rm -r --cached directory/hanya menghilangkan dari git yang dilacak, tetapi struktur repositori tetap ada.
Néstor
287
Untuk menghapus folder / direktori hanya dari repositori git dan bukan dari lokal coba 3 perintah sederhana.
Langkah-langkah untuk mengabaikan folder itu di commit berikutnya
Untuk mengabaikan folder itu dari commit selanjutnya, buat satu file di root bernama .gitignore
dan masukkan nama folder itu ke dalamnya. Anda dapat menempatkan sebanyak yang Anda inginkan
Anda juga perlu melakukan git rm -r --cached FolderName git commit -m "Folder dihapus dari repositori" di komputer Anda yang lain dan kemudian melakukan tarikan untuk tetap selaras.
Simon
1
Apakah ini akan menghapus direktori dari titik itu ditambahkan ke repositori sampai sekarang? Atau apakah itu hanya untuk menghapus direktori dan mengembalikannya ke repo .git?
alpha_989
1
Bagus! Kerja!
BeingCoders
2
Dijelaskan dengan baik, jawaban yang bagus
Rakshit Shah
1
sudah selesai dilakukan dengan baik. Di mesin saya, langkah ketiga tidak berhasil. Tetapi berfungsi jika diubah menjadi $ git push
Hong
82
Jika, karena alasan tertentu, apa yang dikatakan karmakaze tidak berfungsi, Anda dapat mencoba menghapus direktori yang ingin Anda gunakan atau dengan peramban sistem file Anda (mis. Di Windows File Explorer). Setelah menghapus direktori, mengeluarkan perintah: git add -A
dan kemudian git commit -m 'deleting directory'
dan kemudian git push origin master.
Jika Anda menghapus file di direktori (dengan git rmjawaban yang lain menjelaskan), maka direktori tersebut tidak ada lagi sejauh menyangkut git. Anda tidak dapat melakukan direktori kosong, Anda juga tidak bisa menghapusnya.
Ini tidak seperti subversi di mana Anda harus secara eksplisit svn rm emptyfolder/, dan kebetulan mengapa manhalaman untuk git menggambarkan dirinya sebagai "pelacak konten bodoh"
Saat ini desain indeks git (area pementasan) hanya memungkinkan file untuk didaftar, dan tidak ada yang cukup kompeten untuk membuat perubahan untuk memungkinkan direktori kosong telah cukup peduli tentang situasi ini untuk memperbaikinya.
Direktori ditambahkan secara otomatis ketika menambahkan file di dalamnya. Yaitu, direktori tidak perlu ditambahkan ke repositori, dan tidak dilacak sendiri.
Anda dapat mengatakan " git add <dir>" dan itu akan menambah file di sana.
Jika Anda benar-benar membutuhkan direktori untuk ada di checkout Anda harus membuat file di dalamnya. .gitignore berfungsi dengan baik untuk tujuan ini; Anda dapat membiarkannya kosong, atau mengisi nama file yang Anda harapkan muncul di direktori.
saya ingin menghapus direktori kosong (folder) yang saya buat, git tidak dapat menghapusnya, setelah beberapa penelitian saya mengetahui bahwa Git tidak melacak direktori kosong. Jika Anda memiliki direktori kosong di pohon kerja Anda, Anda harus menghapusnya dengan
Anda dapat menggunakan Attlasian Source Tree (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Cukup pilih file dari pohon dan tekan tombol "Hapus" di bagian atas. File akan dihapus dari repositori lokal dan database git lokal. Lalu Komit, lalu dorong.
Ini yang saya lakukan juga. Telah membuatnya sangat mudah untuk dilakukan, meskipun, mempelajari perintah git adalah hal yang baik untuk diketahui.
Micah Montoya
1
Salah satu kolega saya menyarankan BFG Repo-Cleaner yang menurut saya kuat. Ini tidak hanya menghapus data yang tidak diinginkan tetapi juga membersihkan repositori Anda dari informasi komit terkait.
Jawaban:
Hapus direktori dari git dan lokal
Anda dapat checkout 'master' dengan kedua direktori;
Hapus direktori dari git tetapi BUKAN lokal
Seperti disebutkan dalam komentar, apa yang biasanya ingin Anda lakukan adalah menghapus direktori ini dari git tetapi tidak menghapusnya sepenuhnya dari sistem file (lokal)
Dalam hal ini gunakan:
sumber
git rm -r myFolder
itu berhasil, tetapi juga menghapus semuanya dari direktori "MyFolder". Harus mengembalikan semua yang ada di direktori "MyFolder" dan kemudian melakukan.git rm -r --cached myFolder
git rm -r --cached directory/
hanya menghilangkan dari git yang dilacak, tetapi struktur repositori tetap ada.Untuk menghapus folder / direktori hanya dari repositori git dan bukan dari lokal coba 3 perintah sederhana.
Langkah-langkah untuk menghapus direktori
Langkah-langkah untuk mengabaikan folder itu di commit berikutnya
File .gitignore akan terlihat seperti ini
sumber
Jika, karena alasan tertentu, apa yang dikatakan karmakaze tidak berfungsi, Anda dapat mencoba menghapus direktori yang ingin Anda gunakan atau dengan peramban sistem file Anda (mis. Di Windows File Explorer). Setelah menghapus direktori, mengeluarkan perintah:
git add -A
dan kemudian
git commit -m 'deleting directory'
dan kemudian
git push origin master
.sumber
Anda dapat mencoba ini:
git rm -rf <directory_name>
Ini akan memaksa menghapus direktori.
sumber
Jika Anda menghapus file di direktori (dengan
git rm
jawaban yang lain menjelaskan), maka direktori tersebut tidak ada lagi sejauh menyangkut git. Anda tidak dapat melakukan direktori kosong, Anda juga tidak bisa menghapusnya.Ini tidak seperti subversi di mana Anda harus secara eksplisit
svn rm emptyfolder/
, dan kebetulan mengapaman
halaman untuk git menggambarkan dirinya sebagai "pelacak konten bodoh"Jawaban tentang "Bagaimana cara menambahkan direktori kosong ke repositori git" ke FAQ tentang hal ini :
sumber
Saya sudah melakukan folder sebelumnya dan ingin menghapus direktori dalam sejarah juga.
Saya melakukan yang berikut:
Tambahkan folder ke
.gitignore
:Hapus dari semua komit:
hapus referensi dari komitmen lama:
Pastikan semua referensi lama dihapus sepenuhnya
Lakukan pengumpulan sampah
mendorong Anda perubahan ke repositori online:
Anda selesai di sini.
Tapi Anda bisa ke yang berikut untuk mendorong semua perubahan ke semua cabang dengan: Tapi hati-hati dengan perintah ini!
Setelah itu folder dihapus dari git, tetapi tidak dihapus dari disk lokal.
sumber
untuk menghapus folder Kosong
saya ingin menghapus direktori kosong (folder) yang saya buat, git tidak dapat menghapusnya, setelah beberapa penelitian saya mengetahui bahwa Git tidak melacak direktori kosong. Jika Anda memiliki direktori kosong di pohon kerja Anda, Anda harus menghapusnya dengan
Tidak perlu melibatkan Git.
sumber
Pergi ke Direktori git Anda lalu ketik perintah berikut: rm -rf < Direktori Nama >
Setelah Menghapus direktori, lakukan perubahan dengan: git commit -m "Pesan Komit Anda"
Kemudian Cukup dorong perubahan pada direktori GIT jarak jauh: git push origin < Nama cabang >
sumber
Anda dapat menghapus folder secara lokal dan kemudian mendorong, sebagai berikut:
sumber
Saya biasanya menggunakan
git add --all
untuk menghapus file / folder dari repositori jarak jauhmaster
dapat diganti oleh cabang repositori lainnya.sumber
Anda dapat menggunakan Attlasian Source Tree (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Cukup pilih file dari pohon dan tekan tombol "Hapus" di bagian atas. File akan dihapus dari repositori lokal dan database git lokal. Lalu Komit, lalu dorong.
sumber
Salah satu kolega saya menyarankan BFG Repo-Cleaner yang menurut saya kuat. Ini tidak hanya menghapus data yang tidak diinginkan tetapi juga membersihkan repositori Anda dari informasi komit terkait.
sumber
Untuk menambah direktori baru:
Tetapi sekarang Git tidak mengetahui direktori baru ini, karena Git menyimpan jejak file bukan direktori DIRECTORY
Git tidak akan sadar dengan perubahan yang kami buat, jadi kami menambahkan
.keep
file tersembunyi untuk membuat Git menyadari perubahan baru ini.Sekarang, jika Anda menekan
git status
Git akan menyadari perubahan tersebut.Dan Jika Anda ingin menghapus direktori, Anda harus menggunakan perintah ini.
Dan Jika Anda memeriksa dengan menggunakan
git status
, Anda akan melihat direktori telah dihapus.sumber
Perintah pertama git perlu tahu siapa Anda sebelum menghapus apa pun
sumber
Kombinasi dari 2 jawaban berhasil untuk saya
jika masih menunjukkan peringatan, hapus file secara manual
sumber