Diskdən artıq silinmiş Git deposundan bir neçə fayl silinir

Mən rm ( not git rm ) ilə dörd fayl silmək üçün bir Git repoum var və mənim Git statusum bu kimi görünür:

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

Əl ilə keçməkdən və hər bir faylı aşağıdakı kimi əlavə etmədən Git-dən bu faylları necə çıxarmaq olar?

 git rm file1 file2 file3 file4 

İdeal olaraq, git add . kimi işləyən bir şey axtarıram git add . mümkünsə.

1246
29 янв. Codebeef Jan 29 olaraq təyin olundu 2009-01-29 20:18 '09 saat 20:18 'da 2009-01-29 20:18
@ 29 cavab

Git 1.x üçün

 $ git add -u 

Bu, Git avtomatik olaraq faylları izləyir, o cümlədən daha əvvəl izlənilən faylları silmək daxildir.

Go 2.0 üçün

Bütün iş ağacını qurmaq üçün:

 $ git add -u :/ 

Yalnız mövcud yolunu yerinə yetirmək üçün:

 $ git add -u . 
2232
10 сент. Carl tərəfindən verilmiş cavab 10 sentyabr 2009-09-10 03:13 '09 'da 3: 13'da 2009-09-10 03:13
 git ls-files --deleted -z | xargs -0 git rm 
border=0

bəlkə aradığınız şey .. mənim üçün işləyir ..

1339
28 февр. 28 Fevralda Varinder tərəfindən verilmiş cavab 2011-02-28 23:21 '11 11:21 pm 2011-02-28 23:21

Siz istifadə edə bilərsiniz

 git add -u 

Səhnə alanına silinən fayllar əlavə etmək üçün onları kopyalayın

 git commit -m "Deleted files manually" 
726
29 янв. Jan 29-da Cody Caughlan tərəfindən verilmiş cavab 2009-01-29 20:25 '09 da 20:25 'da, 2009-01-29 20:25

Yalnız çalıştırıyorsanız:

 git add -u 

git silinən faylların həqiqətən növbəti törətmənin bir hissəsi olduğunu bilmək üçün indeksini yeniləyəcəkdir. Sonra bu dəyişikliyi doğrulamak üçün "git commit" işini edə bilərsiniz.

Və ya, əgər:

 git commit -a 

O, avtomatik olaraq bu dəyişiklikləri (və digərlərini) qəbul edəcək və onları düzəldəcəkdir.

Yeniləmə. Yalnız silinmiş faylları əlavə etmək istəyirsinizsə, cəhd edin:

 git ls-files --deleted -z | xargs -0 git rm git commit 
354
10 сент. Cavab 10 sentyabrda Emil Sit tərəfindən verilir. 2009-09-10 03:15 '09 saat 03:15 'da 2009-09-10 03:15

Axtardınız ola bilər -A:

 git add -A 

bu git add -u-a oxşardır, həm də yeni fayllar əlavə edir. Bu, hg addremove təxminən bərabərdir (hərəkət aşkarlanması avtomatik olsa da).

163
29 янв. Cavab 29 yanvarda Dustin tərəfindən verilir . 2009-01-29 21:10 '09 9:10 pm 2009-01-29 21:10

Yalnız silinmiş faylları hazırlamaq üçün:

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

Və ya (xargs metodu):

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

Tercihli komanda dəstinin digər istifadə üçün rahat istifadə üçün istifadə edə bilərsiniz.

92
26 нояб. cavab Saeb Amini verildi 26 Noyabr. 2011-11-26 13:34 '11 at 13:34 2011-11-26 13:34
 git rm test.txt 

Həqiqi faylın silinməsindən əvvəl və ya sonra.

60
10 сент. Cavab Peaker Sep 10 2009-09-10 03:13 '09 'da 3: 13'da 2009-09-10 03:13

'--All' və ya '--update' parametrləri ilə git -add istifadə edərək, istədiyinizi daha çox əldə edə bilərsiniz. Yeni və / və ya redaktə edilmiş fayllar indeksə də əlavə olunacaq. Sildəki faylları digər fayllara toxunmadan gitdən silmək üçün bir bash alias qəbulu var:

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

Fayl sistemindən silinən bütün fayllar silinmiş kimi indeksə əlavə olunur.

48
31 янв. cavab 31 yanvarda zobiya verilir 2009-01-31 07:50 '09 saat 07:50 'da 2009-01-31 07:50

Bu həqiqətən vacib deyil, amma seçilmiş cavabla razı deyiləm:

 git add -u 

... iş ağacındaki müvafiq fayllar silindikdə, həm də izlənilən faylların redaktə edilmiş yeni məzmununa məruz qalacaqsa, faylları indeksdən çıxaracaqsınız.

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

... digər tərəfdən izlənilən yalnız rm silinən fayllar olacaq.

Beləliklə, mənim fikrimcə, ən yaxşı seçimdir.

38
09 апр. Stephan Tual tərəfindən verilmiş cavab 09 Apr 2012-04-09 14:24 '12 at 2:24 pm 2012-04-09 14:24

Yalnız bunları edə biləcəyiniz tək dəyişikliklər

 git commit -a 

bütün dəyişikliklər etmək. Silinən faylları ehtiva edəcək.

28
29 янв. Cavab 29 Yanvar SpoonMeiser tərəfindən verilir 2009-01-29 20:29 '09 saat 20:29 'də 2009-01-29 20:29
 git ls-files --deleted | xargs git rm 

- Yalnız silinmiş faylları əlavə etmək üçün ən yaxşı seçimdir.

Burada bəzi digər variantlar var.

 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 окт. Sijo Kurian tərəfindən verilmiş cavab Oct 01 2012-10-01 22:36 '12 at 10:36 pm 2012-10-01 22:36

git add -u

-u - Yeniləyin Yalnız işlənmiş ağacın indeksində artıq izlənilən faylları eşleyin. Bu, yeni fayllar yaratmayacaq, ancaq izlənilən faylların yeni məzmunu dəyişdiriləcəkdir və iş ağacındaki müvafiq fayllar silindiğinde faylları indeksdən çıxaracaqdır.

Əgər deyilsə, default "."; Başqa bir sözlə, cari dizindəki bütün izlənilən faylları və alt dizinlərini yeniləyin.

15
26 авг. Cavab 26 Avqu. 2014-08-26 15:24 '14 saat 15:24 2014-08-26 15:24

Bu sadə həll mənim üçün böyükdür:

 git rm $(git ls-files --deleted) 
14
06 нояб. Cavab Husam Bdr tərəfindən verildi 06 noyabr. 2015-11-06 16:32 '15 'da 16:32' de, 2015-11-06 16:32

.gitconfig əlavə etmək istəyirsinizsə, aşağıdakı adımları edin:

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

Sonra nə etmək lazımdır:

 git rma 
10
25 июля '12 в 23:47 2012-07-25 23:47 Cavab Evan Moran tərəfindən 25 İyulda '12 saat 23:47 'də veriləcək 2012-07-25 23:47
 git ls-files --deleted -z | xargs -0 git rm --cached 

Bu, git istifadə edərək əvvəlcədən izlənilən bütün silinən faylları silməyəcək və adınızdakı boşluqlar olduqda işi idarə edəcəkdir.

POSIX versiyasına asılı olaraq, xargs -0 -r istifadə etmək tələb oluna bilər: bu, xargs sıfır məzmun ilə çıxmağa səbəb olacaq.

EDIT: Təqdim --cached--deleted faylların təsadüfən silinməsindən qorumaq üçün istifadə olunur.

8
04 янв. Cavab Murphy Danger verildi 04 Yanvar. 2014-01-04 23:34 '14 at 23:34 2014-01-04 23:34

Bunu sınayın.

 -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" 

və ya

 git add --all  git commit -m "Your commit" 
6
09 марта '15 в 18:05 2015-03-09 18:05 cavab 09 mart 2015-ci il saat 18: 00 -da təqdim olunacaq

Hansı əmrin həqiqətən işlədiyini görmək üçün istifadə edin.

Mən yalnız Wyrder cavabını eyni şəkildə dəyişdirdim:

 git ls-files --deleted -z | xargs -t -0 git rm 
6
17 апр. Çərşənbə günü Venkateswara Rao tərəfindən verilmiş cavab 2016-04-17 18:00 '16 'da saat 18.00 ' də 2016-04-17 18.00 'də

Aşağıdakılar işləyəcək bir çox fayl olsa belə işləyəcək:

 git ls-files --deleted | xargs git rm 

Yəqin ki, bir şərh yazmaq istərdiniz.

Faydalı Git skriptlərindən daha çox baxın

5
24 мая '13 в 16:45 2013-05-24 16:45 Cavab l3x 24-də verilir '13 16:45 2013-05-24 16:45

Git-də olan bayraqların heç biri yalnız silinən faylları siləcək; dəyişdirdiyiniz hər şey silinmiş fayllar varsa, onda siz yaxşısınız, amma başqa halda git-statunu idarə etməli və çıxışınızı analiz etməlisiniz.

Jeremy-ə cavab verərkən, mən də var:

 git status | sed -s "s/^.*deleted: //" | grep "\(\#\|commit\)" -v | xargs git rm 
  • Fayl vəziyyətini alın.
  • Silinən fayllar üçün fayl adını qeyd edin.
  • C # ilə başlayan bütün sətirləri, həmçinin "silinmiş" sözü ilə status çubuğunu silin; Mən nə olduğunu dəqiq xatırlamıram və daha çox deyil, buna görə fərqli hallar üçün dəyişməlisiniz. Hesab edirəm ki, ifadələrin birləşməsi GNU-a xüsusi ola bilər, buna görə də, əgər gnutils istifadə etmirsinizsə, bir neçə xətt grep -v əlavə etmək lazımdır.
  • Faylları git rm .

Bunu qabığın aliasına yerləşdirin ...

5
26 июля '09 в 2:41 2009-07-26 02:41 Cavab Xiong Chiamiov tərəfindən 26 iyul '09 saat 02:41 'də verildi 2009-07-26 02:41

Qeyd edildiyi kimi

 git add -u 

Silinən faylları silmək üçün, lakin yenilənməsi üçün dəyişdirilmiş faylları da siler.

Değiştirilmiş faylları aradan qaldırmaq üçün

 git reset HEAD <path> 

Əgər əməllərinizin mütəşəkkil və təmiz olmasını istəyirsinizsə.
Qeyd: Silinən faylları da silə bilər, belə ki, bu joker kartlarla diqqətli olun.

4
21 февр. Cavab DarkNeuron 21 fevralda verilir. 2012-02-21 21:43 '12 at 21:43 2012-02-21 21:43
 git commit -m 'commit msg' $(git ls-files --deleted) 

Faylları sildikdən sonra mənim üçün çalışdı.

4
05 авг. cavab Çad 05 avqu. verilir . 2014-08-05 17:40 '14 saat 17:40 'də 2014-08-05 17:40

Mənə eyni şey lazım idi və git gui "dəyişdirilmiş dəyişdi" düyməsini istifadə etdi. o da hər şeyi əlavə edir.

Və "səhnə dəyişikliyindən" sonra "əməl" etdi ...

mənim iş siyahım yenidən təmizlənir.

3
15 нояб. Cavab Serdar tərəfindən 15 noyabrda verilir. 2011-11-15 17:29 '11 'də 17:29' də 2011-11-15 17:29

git add -u <filenames> silinən faylları yerləşdirmək üçün git add -u <filenames> istifadə edə bilərsiniz.

Məsələn, templates/*.tpl faylları templates/*.tpl , git add -u templates/*.tpl istifadə edin.

-u , depoda mövcud olan fayllara daxil olmaq üçün tələb olunur, lakin iş dizininde artıq yoxdur. Əks halda, default git add iş kataloqunda faylları axtaracaq və orada silinən faylları göstərsəniz, onları tapa bilməzlər.

2
07 марта '13 в 4:29 2013-03-07 04:29 cavab cənab Tomsrutter tərəfindən 07 Mart 2013, saat 04:29 'da verilir

(Başqa bir dəyişiklik)

Disk fayllarından silinən hər şeyi silmək istərdim, ancaq bir qovluqdan digər qovluqları tərk etdi. Aşağıdakılar mənim üçün çalışdı:

 git ls-files --deleted | grep <folder-name> | xargs git rm 
1
23 нояб. Cavab şəhər 23 Noyabrda verildi 2016-11-23 13:32 '16 saat 13:32 'da 2016-11-23 13:32

kimi bir şey

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

bunu edə bilərsiniz.

1
29 янв. Jeremy Fransız cavab Jan 29 2009-01-29 20:28 '09 saat 20:28 'da 2009-01-29 20:28

rm-all olaraq silinən faylları yerləşdirmək üçün bir sistem alias əlavə edin

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

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

Qeyd

Windows'un bash quraşdırılmış olması lazımdır.

1
19 февр. Cavab 19 fevralda Haris Krajina tərəfindən verilir . 2014-02-19 15:16 '14 at 15:16 2014-02-19 15:16

Vizual studiya layihəsi üçün

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

uzaq dosyanın yolunun bir yer olduğu zaman faydalıdır

0
04 февр. Sawyer tərəfindən Fevral 04-də verilən cavabı . 2014-02-04 18:34 '14 saat 18:34 'də 2014-02-04 18:34
 git rm $(git ls-files -d) 

git ls-files ilə listelenen bütün faylları (-d yalnız silinmiş faylları göstərir) rədd et. Dosyanın adı və ya yolunda boşluq olan fayllar üçün işləmir, ancaq yadda saxla

0
10 дек. Cavab verildi A. Albershteyn 10 dekabr. 2018-12-10 11:19 '18 saat 11:19 'da 2018-12-10 11:19

Bu günə qədər gördüyüm ən çevik həlldir

 git cola 

Və çalışmaq istədiyiniz bütün silinmiş faylları seçin.

(Qeyd etmirəm ki, adətən bütün komanda əmrini gedə bilərəm, amma git silinmiş faylları bir qədər tərsinə çevirir).

-1
03 окт. 03 oktyabrda Broes De Cat tərəfindən cavab verilir . 2012-10-03 17:28 '12 at 17:28 2012-10-03 17:28

etiketləri ilə bağlı digər suallar və ya sual