Git deposundan, diskten silinmiş birkaç dosyayı silme

Dört dosyayı rm ( git rm değil ) ile rm ve Git durumum şöyle göründüğü bir Git deposuna sahibim:

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

Bu dosyaları Git'ten el ile kaldırmak ve her dosyayı aşağıdaki gibi eklemek zorunda kalmadan nasıl çıkarılır:

 git rm file1 file2 file3 file4 

İdeal olarak, git add . gibi çalışan bir şey arıyorum git add . mümkünse.

1246
29 янв. Codebeef 29 Ocak tarihinde ayarlandı 2009-01-29 20:18 '09, 20:18 2009-01-29 20:18
@ 29 cevaplar

Git 1.x için

 $ git add -u 

Bu, Git'in daha önce izlenen dosyaları silmek de dahil olmak üzere dosyaları otomatik olarak izlemesi anlamına gelir.

Git 2.0 için

Tüm çalışma ağacını oluşturmak için:

 $ git add -u :/ 

Sadece mevcut yolu çalıştırmak için:

 $ git add -u . 
2232
10 сент. tarafından verilen cevap carl 10 Eyl 2009-09-10 03:13 '09, 2009-09-10 03:13 , 03:13
 git ls-files --deleted -z | xargs -0 git rm 
border=0

belki de aradığın şey ... benim için işe yarar ..

1339
28 февр. Cevap 28 Şubat tarihinde Varinder tarafından verildi . 2011-02-28 23:21 '11 11:21 pm 2011-02-28 23:21

Kullanabilirsiniz

 git add -u 

Silinen dosyaları hazırlama alanına eklemek için kopyalayın

 git commit -m "Deleted files manually" 
726
29 янв. Tarafından Cevaplandı 29 Ocak tarihinde Cody Caughlan 2009-01-29 20:25 '09, 20:25 2009-01-29 20:25

Sadece kaçarsan:

 git add -u 

git, sildiğiniz dosyaların bir sonraki işlemenin parçası olması gerektiğini bilmek için dizini günceller. Ardından bu değişikliği doğrulamak için "git commit" komutunu çalıştırabilirsiniz.

Veya koşarsanız:

 git commit -a 

Bu değişiklikleri (ve diğerlerini) otomatik olarak kabul edecek ve düzeltecektir.

Güncelleme. Yalnızca silinen dosyaları eklemek istiyorsanız, şunu deneyin:

 git ls-files --deleted -z | xargs -0 git rm git commit 
354
10 сент. Cevap Emil Sit 10 Eylül tarafından verilmektedir. 2009-09-10 03:15 '09, 03:15, 2009-09-10 03:15

-A'yı arıyor olabilirsiniz:

 git add -A 

bu git add -u komutuna benzer, ancak yeni dosyalar da ekler. Bu kabaca hg addremove (hareket algılama otomatik olsa da).

163
29 янв. Cevap Dustin tarafından 29 Ocak'ta verildi . 2009-01-29 21:10 '09, 09:10, 2009-01-29 21:10

Sadece silinen dosyaları hazırlamak için:

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

Veya (xargs yöntemi):

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

Daha sonra kullanmak için tercih edilen komut kümesinin diğer adını kullanabilirsiniz.

92
26 нояб. Cevap 26 Kasım Saeb Amini verilir. 2011-11-26 13:34 '11 13:34 2011-11-26 13:34
 git rm test.txt 

Gerçek dosyayı silmeden önce veya sonra.

60
10 сент. Cevapla Peaker 10 Eyl 2009-09-10 03:13 '09, 2009-09-10 03:13 , 03:13

Git -add'yi '--all' veya '--update' parametreleriyle kullanarak istediğinizden daha fazlasını alabilirsiniz. Yeni ve / veya değiştirilmiş dosyalar da dizine eklenecektir. Silinen dosyaları başka dosyalara dokunmadan git'den silmek istediğimde bash diğer adı ayarını kullanıyorum:

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

Dosya sisteminden silinen tüm dosyalar, dizine silinmiş olarak eklenir.

48
31 янв. Cevap verildi zobie 31 Ocak 2009-01-31 07:50 '09, 07:50, 2009-01-31 07:50

Bu gerçekten önemli değil, ama seçilen cevaba katılmıyorum:

 git add -u 

... çalışma ağacındaki ilgili dosyalar silinmişse, dizinden dosyaları kaldıracak, ancak izlenen dosyaların değiştirilmiş yeni içeriğine de tabi olacaktır.

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

... diğer taraftan, izlenen sadece silinen dosyalar olacaktır.

Sonuncusu, bence en iyi seçenek.

38
09 апр. Tarafından cevap Stephan Tual 09 Nis 2012-04-09 14:24 '12, 02:24, 2012-04-09 14:24

Bunlar sadece değişikliklerse, sadece

 git commit -a 

tüm değişiklikleri yapmak. Bu silinmiş dosyaları içerecektir.

28
29 янв. Cevap SpoonMeiser tarafından verildi Jan 29 2009-01-29 20:29 '09, 20:29 2009-01-29 20:29
 git ls-files --deleted | xargs git rm 

- Sadece silinen dosyaları eklemek için en iyi seçenek.

İşte diğer bazı seçenekler.

 git add . => Add all (tracked and modified)/new files in the working tree. git add -u => Add all modified/removed files which are tracked. git add -A => Add all (tracked and modified)/(tracked and removed)/new files in the working tree. git commit -a -m "commit message" - Add and commit modified/removed files which are tracked. 
19
01 окт. Tarafından cevap Sijo Kurian Ekim 01 2012-10-01 22:36 '12, 10:36, 2012-10-01 22:36

git ekle -u

-u - Güncelleme Yalnızca çalışma ağacında değil, dizinde izlenen dosyaların eşleşmesi. Bu, hiçbir zaman yeni dosyalar oluşturmayacağı, ancak izlenen dosyaların yeni içeriğinin değişeceği ve çalışma ağacındaki ilgili dosyalar silinmişse dosyaları dizinden kaldıracağı anlamına gelir.

Değilse, varsayılan değer "."; Başka bir deyişle, izlenen tüm dosyaları mevcut dizinde ve alt dizinlerinde güncelleyin.

15
26 авг. Cevap 26 Ağustos'ta verilmiştir . 2014-08-26 15:24 '14, 15:24 2014-08-26 15:24

Bu basit çözüm benim için harika:

 git rm $(git ls-files --deleted) 
14
06 нояб. Cevap, Hüsam Bdr 06 Kasım tarafından verildi. 2015-11-06 16:32 '15 16: 32'de 2015-11-06 16:32

.gitconfig eklemek istiyorsanız, aşağıdaki adımları izleyin:

 [alias] rma = !git ls-files --deleted -z | xargs -0 git rm 

O zaman tek yapman gereken koşmak:

 git rma 
10
25 июля '12 в 23:47 2012-07-25 23:47 Cevap 25 Ocak'ta Evan Moran tarafından 23: 12'de 23:47 2012-07-25 23:47
 git ls-files --deleted -z | xargs -0 git rm --cached 

Bu, daha önce git kullanılarak izlenen tüm silinen dosyaları siler ve adlarınızda boşluklar olduğunda da durumu ele alır.

POSIX sürümünüze bağlı olarak, xargs -0 -r kullanmanız gerekebilir: bu, xargs sıfır içerikle dikkatlice çıkmasına neden olur.

EDIT: --cached ve --deleted , henüz silinmemiş dosyaların yanlışlıkla silinmesine karşı korumak için birlikte kullanılır.

8
04 янв. Cevap Murphy Tehlike 04 Ocak'ta verilir. 2014-01-04 23:34 '14 23:34 2014-01-04 23:34

Dene.

 -a --all Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected. git add .  git commit -m -a "Your commit" 

veya

 git add --all  git commit -m "Your commit" 
6
09 марта '15 в 18:05 2015-03-09 18:05 Cevap, 09 Mart, 15’te 18:05’te 15 Mart 2015-03-09 18:05

Lütfen hangi komutun çalıştığını görmek için -t kullanın.

Wyrder'ın cevabını aynısını yapacak şekilde değiştirdim:

 git ls-files --deleted -z | xargs -t -0 git rm 
6
17 апр. Cevap 17 Nisan tarihinde Venkateswara Rao tarafından verildi. 2016-04-17 18:00 '16, 18:00 2016-04-17 18:00

İşlenecek çok sayıda dosyanız olsa bile aşağıdakiler işe yarayacaktır:

 git ls-files --deleted | xargs git rm 

Muhtemelen bir yorum da bırakmak isteyeceksiniz.

Daha fazlasını görün: Faydalı Git komut dosyaları

5
24 мая '13 в 16:45 2013-05-24 16:45 Cevap 24 Mayıs'ta 13: 16'da 16 :45'te verilmiştir. 2013-05-24 16:45

Git -add içindeki bayrakların hiçbiri yalnızca silinen dosyaları silmez; değiştirdiğiniz tüm dosyalar silinmişse, sorun değilsiniz ancak aksi halde git -status komutunu çalıştırıp çıktısını analiz etmeniz gerekir.

Jeremy'nin cevabını bulmak, elimde bir şey var:

 git status | sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm 
  • Dosya durumunu al.
  • Silinen dosyalar için dosya adını vurgulayın.
  • C # ile başlayan tüm satırların yanı sıra "deleted" kelimesini içeren durum çubuğunu silin; Ne olduğunu tam olarak hatırlamıyorum ve artık yok, bu yüzden farklı durumlar için değiştirmeniz gerekebilir. Bence ifadelerin gruplanması GNU’ya özgü olabilir, bu yüzden fındık kullanmıyorsanız, grep -v satırlarını eklemeniz gerekebilir.
  • Dosyaları git rm aktar.

Bunu kabuk takma adına yapıştırın ...

5
26 июля '09 в 2:41 2009-07-26 02:41 Cevap, Xiong Chiamiov tarafından 26 Temmuz '09 da 02:41, 2009-07-26 02:41

Belirtildiği gibi

 git add -u 

silinmek üzere silinmiş dosyaları siler, ANCAK, güncelleme için değiştirilmiş dosyaları da.

Değiştirilen dosyaları devre dışı bırakmak için

 git reset HEAD <path> 

Taahhütlerinin düzenli ve temiz olmasını istiyorsan.
NOT: Silinen dosyaları da silebilir, bu yüzden joker karakterlere dikkat edin.

4
21 февр. cevabı DarkNeuron 21 Şub. 2012-02-21 21:43 '12 21:43 2012-02-21 21:43
 git commit -m 'commit msg' $(git ls-files --deleted) 

Dosyaları sildikten sonra benim için çalıştı.

4
05 авг. Cevap Çad 05 Ağustos. 2014-08-05 17:40 '14, 17:40 2014-08-05 17:40

Aynı şeye ihtiyacım vardı ve git gui "değişti" düğmesini kullandım. o da her şeyi ekler.

Ve "aşama değişiminden" sonra "taahhütte bulundum" ...

bu yüzden çalışma dizim tekrar silindi.

3
15 нояб. Cevap 15 Kasım'da Serdar tarafından verildi. 2011-11-15 17:29 '11 17:29 2011-11-15 17:29

Sadece silinen dosyaları yerleştirmek için git add -u <filenames> kullanabilirsiniz.

Örneğin, templates/*.tpl dosyalarını templates/*.tpl , git add -u templates/*.tpl .

-u depoda bulunan dosyalara erişmek için gereklidir, ancak artık çalışma dizininde bulunmaz. Aksi takdirde, varsayılan olarak git add , çalışma dizinindeki dosyaları arayacaktır ve orada sildiğiniz dosyaları belirlerseniz, onları bulamazlar.

2
07 марта '13 в 4:29 2013-03-07 04:29 Cevap thomasrutter tarafından 07.03.013 , 04:29 de 04:29

(Başka bir değişiklik)

Zaten disk dosyalarından silinmiş olan her şeyi silmek istedim, ancak belirli bir klasörden diğer klasörleri sağlam bırakarak silmek istedim. Aşağıdaki benim için çalıştı:

 git ls-files --deleted | grep <folder-name> | xargs git rm 
1
23 нояб. 23 kasabada verilen cevap 2016-11-23 13:32 '16, 13:32, 2016-11-23 13:32

gibi bir şey

 git status | sed -s "s/^.*deleted: //" | xargs git rm 

yapabilir.

1
29 янв. Jeremy Fransızca cevap Ocak 29 2009-01-29 20:28 '09, 20:28 2009-01-29 20:28

Silinen dosyaları rm-all olarak yerleştirmek için sistem takma adı ekleme

UNIX alias rm-all='git rm $(git ls-files --deleted)'

WINDOWS doskey rm-all=bash -c "git rm $(git ls-files --deleted)"

düşünce

Windows bash yüklü olması gerekir.

1
19 февр. Cevap, 19 Şubat'ta Haris Krajina tarafından verildi . 2014-02-19 15:16 '14, 15:16 2014-02-19 15:16

Görsel stüdyo projesi için

 'git ls-files --deleted | sed 's/(.*)/"\1"/'| xargs git rm' 

uzak dosyanın yolunda bir boşluk olduğunda kullanışlıdır

0
04 февр. Cevap, Sawyer tarafından 04 Şubat'ta verildi . 2014-02-04 18:34 '14, 18:34 2014-02-04 18:34
 git rm $(git ls-files -d) 

git ls-files tarafından listelenen tüm dosyaları siler (-d sadece silinmiş dosyaları gösterir). Dosya adında veya yolunda boşluk bulunan dosyalar için çalışmaz, ancak yalnızca hatırlayın

0
10 дек. verilen cevap A. Albershteyn 10 Aralık. 2018-12-10 11:19 '18, 11:19. 2018-12-10 11:19

Bugüne kadar bulduğum en esnek çözüm

 git cola 

Çalıştırmak istediğim tüm silinen dosyaları seç.

(Not. Genellikle tüm komut satırlarını git'te yaparım, ancak git silinen dosyaları biraz garip tutar).

-1
03 окт. Cevap, 03 Ekim'de Broes De Cat tarafından verildi . 2012-10-03 17:28 '12, 17:28 2012-10-03 17:28

etiketleri ile ilgili diğer sorular veya Soru Sor