Kaip ištrinti kelis ištrintus failus „Git“ saugykloje

Ištrinau keletą failų, o git būsena rodoma taip, kaip parodyta žemiau.

Aš padariau ir stumiau.

GitHub vis dar rodo ištrintus failus saugykloje. Kaip ištrinti failus „GitHub“ saugykloje?

 # 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/> 

Jei naudoju „ git rm , tai pateikia toliau.

 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 
215
14 мая '11 в 23:00 2011-05-14 23:00 „Shin“ yra nustatytas gegužės 14 d., 11 val. 23:00, 2011-05-14 23:00
@ 16 atsakymų
 git add -u 

atnaujina visus pakeitimus.

593
01 сент. Atsakymas duotas mshameers 01 Sep. 2012-09-01 19:48 '12, 19:48 PM 2012-09-01 19:48

Būkite labai atsargūs git rm . ; jis gali ištrinti daugiau nei norite. Žinoma, jūs galite atsigauti, bet lengviau to nedaryti.

Paprasčiausias gali būti:

 git rm modules/welcome/> 

Negalite naudoti „shell shell“ pakaitos ženklų, nes failų nėra, tačiau galite naudoti (bent jau bash):

border=0
 git rm modules/welcome/> 

Arba apsvarstykite:

 git status | sed -n '/^# *deleted:/s///p' | xargs git rm 

Tai parodo „ git status , numatytuosius nustatymus be spausdinimo ( sed -n ), bet linijose, prasidedančiose # deleted: jis atsikrato # ir deleted: ir išspausdina tai, kas liko; xargs renka argumentus ir suteikia jiems git rm komandą. Tai veikia bet kokiam skaičiui failų, nepriklausomai nuo pavadinimų panašumo (ar skirtumų).

89
14 мая '11 в 23:22 2011-05-14 23:22 atsakymą pateikė Jonathan Leffler gegužės 14 d. 11 val. 23:22 2011-05-14 23:22

Kita atsakymo ByScripts versija

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

Tai tik pašalins ištrintus failus iš git.

Jį taip pat galima naudoti tik pakeistiems failams pridėti.

 git add $(git ls-files --modified) 

Šios komandos taip pat veikia >

49
04 июля '13 в 21:40 2013-07-04 21:40 atsakymas į Vijay C pateikiamas liepos 4 d. 13 val. 21:40 2013-07-04 21:40

Atnaujinkite visus atliktus pakeitimus:

 git add -u 

Ištrinti failai turėtų keistis iš nestacionarios (paprastai raudonos) į pristatytą (žalia). Tada nustatykite ištrintų failų ištrynimą:

 git commit -m "note" 
34
23 апр. Atsakyti Aziz Alto 23 Bal. 2014-04-23 03:45 '14 ne 3:45 2014-04-23 03:45

Geriausias sprendimas, jei nereikia kurti modifikuotų failų, yra naudoti „ git add -u , kaip rodo „ mshameers“ ir / arba „ pb2q“ .

Jei norite ištrinti ištrintus failus, bet nesukurti jokių modifikuotų failų, manau, kad turėtumėte naudoti „ ls-files argumentą naudodami parinktį --deleted (nereikia naudoti įprastos išraiškos ar kitų sudėtingų argumentų / parametrų):

 git ls-files --deleted | xargs git rm 
11
11 янв. Atsakymas pateikiamas ByScripts 11 sausis 2013-01-11 15:46 '13, 15:46, 2013-01-11 15:46

Taip, git rm <filename> tvarkys nuotolinę failo būseną, kur <filename> gali būti globinis šablonas:

 $ git rm modules/welcome/> 

Tada galite išspręsti.

git commit -a tai darys vieną kartą, jei norite.

Taip pat galite naudoti „ git add -u kad atliktumėte visus pakeitimus, įskaitant visus ištrintus failus, ir tada atlikite.

8
14 мая '11 в 23:06 2011-05-14 23:06 atsakymą pateikė Ben James , gegužės 14 d. 11 d. 23:06. 2011-05-14 23:06

Kai turiu daug failų, kuriuos git rm kurie nebuvo įdiegti tvirtinimui, galite juos visus perkelti viename rodinyje su:

 for i in `git status | grep deleted | awk '{print $3}'`; do git rm $i; done 

Kaip minėta klausimyne, būkite atsargūs su „ git rm .

7
08 июля '12 в 11:15 2012-07-08 11:15 atsakymą pateikė Justin Mandzik, liepos 12 d., 12 val. 11:15 val. 2012-07-08 11:15

Pabandykite atlikti šiuos veiksmus:

  git rm `git ls-files -d` 
5
01 окт. atsakymą pateikė eludom 01 okt. 2015-10-01 14:03 '15 at 2:03 pm 2015-10-01 14:03

Galite sukurti apvalkalo scenarijų, kuris paleidžia visus jūsų failus paleidžiant:

 git status | grep deleted | awk '{print "git rm " $3;}' > ../remove.sh 

remove.sh scenarijus yra remove.sh ir jame yra visas git rm komandų sąrašas.

3
26 июня '14 в 4:32 2014-06-26 04:32 atsakymą pateikė La-comadreja birželio 26 d. 14 d. 4:32 2014-06-26 04:32

Galite naudoti

 git commit -m "remove files" -a git push 

Ištrinus failus rankiniu būdu.

3
26 февр. atsakymas pateiktas onalbi 26 vasario mėn. 2014-02-26 01:17 '14 ne 1:17 2014-02-26 01:17
 git add -u . git add --update . 
2
17 авг. atsakymą pateikė euccas 17 rug . 2015-08-17 04:47 '15 at 4:47 2015-08-17 04:47
 git status | sed 's/^#\s*deleted:\s*//' | sed 's/^#.*//' | xargs git rm -rf 
2
12 нояб. Atsakymas pateikiamas Boush 12 lapkričio. 2012-11-12 05:12 '12 at 5:12 2012-11-12 05:12

Jei norite pašalinti visus juos naudodami „git rm“. Tai aš darau:

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

Šis sąrašas prašo visus ištrintus failus ir pašalinti juos iš git saugyklos. Viltis padės.

2
29 сент. Atsakymas pateikiamas DevWL 29 Sep. 2013-09-29 15:34 '13, 15:34 2013-09-29 15:34

Štai kaip aptikti ištrintus failus ir pašalinti jų ištrynimą kaip kito įsipareigojimo dalį. Visi šios temos sprendimai turi skirtingus privalumus. Šis sprendimas konkrečiai sprendžia failų pavadinimų, kuriuose yra tarpų, problemą.

 git status --porcelain | awk '/^.D .*$/ {print $0}' | sed 's/.D \(.*\)/\1/' | tr -d '"' | xargs -I {} git rm '{}' 

įsitikinkite, kad patikrinote šią parinktį naudodami „git -dry-run“ funkciją prieš paleisdami šiuos veiksmus:

 git status --porcelain | awk '/^.D .*$/ {print $0}' | sed 's/.D \(.*\)/\1/' | tr -d '"' | xargs -I {} git rm --dry-run '{}' 

paaiškinimas:

 git status --porcelain 

Jis išspausdina kažką panašaus į D / / aplanko kelią / failo kelią, kuris atsiranda tik tada, kai kelio pavadinimuose yra tarpų

 awk '/^.D .*$/ {print $0}' 

tik linijos, prasidedančios „D“ rungtynėmis

 sed 's/ D \(.*\)/\1/' 

ištrinti „D“ iš kiekvienos eilutės priekio

 tr -d '"' 

jei yra, pašalinkite kabutes

 xargs -I {} git rm '{}' 

nustatyti failo pavadinimo kintamuosius kaip {}, paleiskite failo pavadinimą pagal „git rm“, įtrauktą į atskiras kabutes, kad įsitikintumėte, jog jis palaiko failų vardus su tarpais.

1
21 марта '15 в 22:26 2015-03-21 22:26 atsakymas duotas ND kovo 21 d. 15 val. 22:26 2015-03-21 22:26

Aš turėjau problemų su vaiduoklių failais, kurie atsirado mano repo po to, kai juos ištrinau ir suklupau šiam tvarkingam komandai!

git add -A

Tai iš esmės yra tokia pati kaip „ git add -A ir „ git add -u , bet didžiosios ir mažosios raidės. Gavau iš šios nuostabios nuorodos (dabar ši nuoroda nurodo versiją archive.org, nes 2016 m. Birželio mėn. Originalas buvo konvertuotas į šlamštą / phishing puslapį)

1
28 авг. atsakymą pateikė „ NetOperator Wibby“ 28 d. 2013-08-28 18:10 '13, 18:10, 2013-08-28 18:10

Įdiegta valymo funkcija taip pat gali būti naudinga ...

 git clean -fd 
1
09 апр. Atsakymas, kurį pateikė Randall Borck 09 Bal 2013-04-09 21:51 '13, 21:51 PM 2013-04-09 21:51

Kiti klausimai apie „ žymes arba Užduoti klausimą