Pertanyaan Menghapus beberapa file dari repositori Git yang telah dihapus dari disk


Saya memiliki repo Git yang saya hapus empat file dari menggunakan rm (tidak  git rm), dan status Git saya terlihat seperti ini:

#    deleted:    file1.txt
#    deleted:    file2.txt
#    deleted:    file3.txt
#    deleted:    file4.txt

Bagaimana cara menghapus file-file ini dari Git tanpa harus secara manual melalui dan menambahkan setiap file seperti ini:

git rm file1 file2 file3 file4

Idealnya, saya mencari sesuatu yang bekerja dengan cara yang sama git add . tidak, jika itu mungkin.


1227
2018-01-29 17:18


asal


Jawaban:


Untuk Git 1.x

$ git add -u

Ini memberitahu git untuk secara otomatis menampilkan file yang dilacak - termasuk menghapus file yang sebelumnya dilacak.

Untuk Git 2.0

Untuk menampilkan seluruh pohon kerja Anda:

$ git add -u :/

Untuk tahap hanya jalan saat ini:

$ git add -u .

2205
2017-09-10 00:13



git ls-files --deleted -z | xargs -0 git rm 

mungkin apa yang Anda cari .. itu bekerja untuk saya ..


1335
2018-02-28 20:21



Kamu dapat memakai

git add -u

Untuk menambahkan file yang terhapus ke area stage, kemudian lakukan

git commit -m "Deleted files manually"

725
2018-01-29 17:25



Jika Anda hanya menjalankan:

git add -u

git akan memperbarui indeksnya untuk mengetahui bahwa file yang telah Anda hapus seharusnya benar-benar menjadi bagian dari commit berikutnya. Kemudian Anda dapat menjalankan "git commit" untuk memeriksa perubahan itu.

Atau, jika Anda menjalankan:

git commit -a

Secara otomatis akan mengambil perubahan ini (dan lainnya) dan melakukan mereka.

Memperbarui: Jika Anda hanya ingin menambahkan file yang terhapus, coba:

git ls-files --deleted -z | xargs -0 git rm
git commit

354
2017-09-10 00:15



Anda mungkin mencari -A:

git add -A

ini mirip dengan git add -u, tetapi juga menambahkan file baru. Ini kira-kira setara dengan hg addremove perintah (meskipun deteksi bergerak bersifat otomatis).


163
2018-01-29 18:10



Ke panggung hanya yang dihapus file:

for x in $(git status | grep deleted | awk '{print $2}'); do git rm $x; done

Atau (cara xargs):

git status | awk '/deleted/ {print $2}' | xargs git rm

Kamu bisa alias set perintah yang Anda pilih untuk digunakan nanti dengan nyaman.


92
2017-11-26 10:34



git rm test.txt

Sebelum atau setelah Anda menghapus file yang sebenarnya.


59
2017-09-10 00:13



Dengan menggunakan git-add dengan opsi '--all' atau '--update' Anda mungkin mendapatkan lebih dari yang Anda inginkan. File baru dan / atau diubah juga akan ditambahkan ke indeks. Saya memiliki pengaturan bash alias ketika saya ingin menghapus file yang dihapus dari git tanpa menyentuh file lain:

alias grma='git ls-files --deleted -z | xargs -0 git rm'

Semua file yang telah dihapus dari sistem file ditambahkan ke indeks sebagai dihapus.


47
2018-01-31 04:50



Bukan itu benar-benar penting, tapi saya tidak setuju dengan jawaban yang dipilih:

git add -u 

... akan menghapus file dari indeks jika file yang sesuai di pohon kerja telah dihapus, tetapi itu juga akan menampilkan konten baru yang dimodifikasi dari file yang dilacak.

git rm $(git ls-files --deleted)

... di sisi lain hanya akan rm file yang dihapus yang dilacak.

Jadi yang terakhir dalam pandangan saya adalah pilihan yang lebih baik.


38
2018-04-09 11:24



Jika itu satu-satunya perubahan, Anda bisa melakukannya

git commit -a

untuk melakukan semua perubahan. Itu akan termasuk file yang dihapus.


28
2018-01-29 17:29