Saya telah menghapus beberapa file dan menunjukkan status git seperti di bawah ini.
Saya telah berkomitmen dan mendorong.
GitHub masih menampilkan file yang dihapus di repositori. Bagaimana saya bisa menghapus file di repositori GitHub?
# On branch master
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: modules/welcome/language/english/kaimonokago_lang.php
# deleted: modules/welcome/language/french/kaimonokago_lang.php
# deleted: modules/welcome/language/german/kaimonokago_lang.php
# deleted: modules/welcome/language/norwegian/kaimonokago_lang.php
Jika saya menggunakan git rm
, itu memberi yang berikut.
usage: git rm [options] [--] <file>...
-n, --dry-run dry run
-q, --quiet do not list removed files
--cached only remove from the index
-f, --force override the up-to-date check
-r allow recursive removal
--ignore-unmatch exit with a zero status even if nothing matched
Jawaban:
memperbarui semua perubahan Anda
sumber
Berhati-hatilah
git rm .
; mungkin menghapus lebih dari yang Anda inginkan. Tentu saja, Anda dapat pulih, tetapi lebih mudah tidak harus melakukannya.Yang paling sederhana adalah:
Anda tidak dapat menggunakan shell wildcard karena file tidak ada, tetapi Anda dapat menggunakan (setidaknya di Bash):
Atau pertimbangkan:
Ini mengambil output dari
git status
, tidak mencetak apa pun secara default (sed -n
), tetapi pada baris yang dimulai# deleted:
, ia menghilangkan#
dandeleted:
dan mencetak apa yang tersisa;xargs
mengumpulkan argumen dan menyediakannya untuk suatugit rm
perintah. Ini berfungsi untuk sejumlah file terlepas dari kesamaan (atau perbedaan) dalam nama.sumber
git diff --diff-filter=D --name-only -z | xargs -0 git rm
adalah pendekatan yang lebih andal daripada mencoba mem-parsinggit status
yang berorientasi pengguna dan tidak dijamin stabil di versi mendatang.git diff
(yang saya tidak miliki, tidak memiliki kebutuhan sebelumnya). Terima kasih!git ls-files --deleted | xargs git rm
lakukan trik untuk saya.Versi lain untuk jawaban ByScripts adalah
Ini HANYA akan menghapus file yang dihapus dari git.
Bisa juga digunakan untuk menambahkan file yang HANYA dimodifikasi juga.
Perintah-perintah ini juga berfungsi di gitbash untuk windows.
sumber
git ls-files
dengan status yang dihapus atau diubah sangat membantu.'git add --update (or -u)'
tanpa argumen jalur dari subdirektori pohon akan berubah di Git 2.0 dan tidak boleh digunakan lagi. Untuk menambahkan konten untuk seluruh pohon, jalankan:git add --update :/
(atau git add -u: /) Untuk membatasi perintah ke direktori saat ini, jalankan:git add --update .
(atau git add -u.) Dengan versi Git saat ini, perintah dibatasi untuk direktori saat inisrc/my spaced directory/myfile
. Ini bisa ditangani secara individual tetapi bagaimana bisa ditangani menggunakan perintah dalam jawaban ini?Perbarui semua perubahan yang Anda buat:
File yang dihapus harus berubah dari yang tidak dipentaskan (biasanya warna merah) menjadi bertahap (hijau). Kemudian komit untuk menghapus file yang dihapus:
sumber
Solusi terbaik jika Anda tidak peduli tentang pementasan file yang dimodifikasi adalah dengan menggunakan
git add -u
seperti yang dikatakan oleh mshameers dan / atau pb2q .Jika Anda hanya ingin menghapus file yang dihapus, tetapi tidak membuat stage yang dimodifikasi, saya pikir Anda harus menggunakan
ls-files
argumen dengan--deleted
opsi (tidak perlu menggunakan regex atau argumen / opsi kompleks lainnya):sumber
git add -A
Atasi masalah ini ... untuk berjaga-jaga jika ada yang ingin tahu di masa depan. periksa jawaban di bawah iniYa,
git rm <filename>
akan menampilkan status file yang dihapus, di mana<filename>
bisa menjadi pola glob:Lalu, Anda bisa berkomitmen.
git commit -a
akan melakukan ini dalam sekali jalan, jika Anda mau.Anda juga dapat menggunakan
git add -u
untuk mengatur semua perubahan, termasuk semua file yang dihapus, kemudian komit.sumber
git add -u
persis seperti apa yang kami cari - jika Anda membuat banyak penghapusan, maka ingin melakukan semua penghapusan, yang tampaknya merupakan cara termudah dan paling 'standar' (artinya, tanpa gumpalan khusus kasus atau shell kompleks menguraikan ke dalam xargs). Apakah ada alasan mengapa kami tidak ingin menggunakan ini, selain karena itu menambahkan semua perubahan sekaligus?Ketika saya memiliki banyak file yang saya hapus yang tidak dipentaskan untuk komit, Anda dapat
git rm
semuanya dalam satu acara dengan:Seperti yang disebutkan oleh penjawab pertanyaan, berhati-hatilah dengan
git rm
.sumber
Coba ini:
sumber
Kamu bisa memakai
Setelah Anda menghapus file secara manual.
sumber
Anda dapat membuat skrip shell yang akan menghapus semua file Anda saat dijalankan:
Script yang dibuat adalah
remove.sh
dan berisi daftargit rm
perintah lengkap.sumber
sumber
sumber
Jika Anda ingin menghapus semuanya dengan menggunakan "git rm". Inilah yang saya lakukan:
Kueri ini mencantumkan semua file yang telah dihapus dan menghapusnya dari repositori git Anda. Semoga ini bisa membantu.
sumber
Fungsi bersih bawaan juga dapat membantu ...
sumber
Saya memiliki masalah ini file hantu muncul di repo saya setelah saya menghapusnya dan menemukan perintah yang rapi ini!
git add -A
Ini pada dasarnya sama dengan
git add -a
dangit add -u
digabungkan, tetapi case-sensitive. Saya mendapatkannya dari tautan luar biasa ini ( tautan ini menunjuk ke versi di archive.org sekarang, karena yang asli telah dikonversi ke halaman spam / phishing pada Juni 2016)sumber
Berikut adalah cara mendeteksi file yang dihapus dan menghapus tahapannya sebagai bagian dari komit berikutnya. Semua solusi pada utas ini memiliki kelebihan yang berbeda. Solusi ini di bawah ini secara khusus berkaitan dengan masalah nama file dengan spasi di dalamnya.
pastikan Anda mengujinya dengan opsi --dry-run git sebelum menjalankannya dengan yang berikut:
penjelasan:
Ini mencetak sesuatu seperti D "/ path ke folder / path ke file" yang terjadi hanya ketika ada spasi di nama path
hanya cocokkan garis yang dimulai dengan "D"
hapus "D" dari bagian depan setiap string
hapus tanda kutip, jika ada
mendefinisikan variabel nama file sebagai {} jalankan nama file di bawah git rm yang dilampirkan dalam tanda kutip tunggal untuk memastikan bahwa ia mendukung nama file dengan spasi.
sumber