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?
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?
Jawaban:
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)
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:
git rm -r --cached myFolder
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.
Langkah-langkah untuk menghapus direktori
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
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
File .gitignore akan terlihat seperti ini
/FolderName
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
.
Anda dapat mencoba ini:
git rm -rf <directory_name>
Ini akan memaksa menghapus direktori.
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 mengapa man
halaman untuk git menggambarkan dirinya sebagai "pelacak konten bodoh"
Jawaban tentang "Bagaimana cara menambahkan direktori kosong ke repositori git" ke FAQ tentang hal ini :
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 sudah melakukan folder sebelumnya dan ingin menghapus direktori dalam sejarah juga.
Saya melakukan yang berikut:
Tambahkan folder ke .gitignore
:
echo Folder_Name/ >> .gitignore
Hapus dari semua komit:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
hapus referensi dari komitmen lama:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Pastikan semua referensi lama dihapus sepenuhnya
rm -Rf .git/logs .git/refs/original
Lakukan pengumpulan sampah
git gc --prune=all --aggressive
mendorong Anda perubahan ke repositori online:
git push
Anda selesai di sini.
Tapi Anda bisa ke yang berikut untuk mendorong semua perubahan ke semua cabang dengan: Tapi hati-hati dengan perintah ini!
git push origin --all --force
git push origin --tags --force
Setelah itu folder dihapus dari git, tetapi tidak dihapus dari disk lokal.
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
rm -r folderName
Tidak perlu melibatkan Git.
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.
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.
Untuk menambah direktori baru:
mkdir <YOUR-DIRECTORY>
Tetapi sekarang Git tidak mengetahui direktori baru ini, karena Git menyimpan jejak file bukan direktori DIRECTORY
git status
Git tidak akan sadar dengan perubahan yang kami buat, jadi kami menambahkan .keep
file tersembunyi untuk membuat Git menyadari perubahan baru ini.
touch /YOUR-directory/.keep
Sekarang, jika Anda menekan git status
Git akan menyadari perubahan tersebut.
Dan Jika Anda ingin menghapus direktori, Anda harus menggunakan perintah ini.
rm -r <YOUR-DIRECTORY>
Dan Jika Anda memeriksa dengan menggunakan git status
, Anda akan melihat direktori telah dihapus.
Kombinasi dari 2 jawaban berhasil untuk saya
git rm -r one-of-the-directories
git commit . -m "Remove duplicated directory"
git push
jika masih menunjukkan peringatan, hapus file secara manual
git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
git push