Kaip grąžinti neprisiimtus pakeitimus, įskaitant failus ir aplankus?

Ar yra git komanda, kad galėtumėte grąžinti visus nepriskirtus darbo medžio ir indekso pakeitimus, taip pat ištrinti naujai sukurtus failus ir aplankus?

737
27 апр. nustatyti MEM 27 balandžio. 2011-04-27 19:06 '11, 19:06, 2011-04-27 19:06
@ 10 atsakymų

Galite paleisti šias dvi komandas:

 # Revert changes to modified files. git reset --hard # Remove all untracked files and directories. (`-f` is `force`, `-d` is `remove directories`) git clean -fd 
1263
28 апр. atsakymas duotas htanata 28 Bal 2011-04-28 05:37 2011-11-28 05:11 5:37

Jei norite atmesti pakeitimus tik dabartiniame darbo kataloge, naudokite

 git checkout -- . 
border=0

Tikiuosi, kad tai padės.

417
21 июня '13 в 7:41 2013-06-21 07:41 atsakymą pateikė „ Ramashish Baranwal “ birželio 21 d. 13 val.

Naudokite „git checkout -...“, jei norite atmesti darbo katalogo pakeitimus.

 git checkout -- app/views/posts/index.html.erb 

arba

 git checkout -- * 

pvz., ištrina visus pašalintų failų pakeitimus

 modified: app/controllers/posts.rb modified: app/views/posts/index.html.erb 
77
13 марта '13 в 4:16 2013-03-13 04:16 atsakymas įteiktas Zarne Dravitzki kovo 13 d. 13 val. 4:16 2013-03-13 04:16

Vienas neaktyvus būdas yra paleisti šias dvi komandas:

  • git stash Tai perkelia jūsų pakeitimus į Atlicināt, grąžins jus į HEAD būseną.
  • git stash drop Tai ištrins paskutinę talpyklą, sukurtą paskutinėje komandoje.
35
18 июля '13 в 12:20 2013-07-18 12:20 atsakymą pateikė glumgold liepos 18 d. 13 val. 12:20 2013-07-18 12:20
 git clean -fd 

nepadėjo, buvo naujų failų. Ką aš padariau, visiškai pašalinti visą darbo medį ir tada

 git reset --hard 

Žr. „ Kaip išvalyti vietinį darbo katalogą„ Git?

 git clean -fdx 

Pastaba -x vėliava pašalins visus „Git“ ignoruotus failus, todėl būkite atsargūs (žr. Diskusiją, į kurią atsakysiu).

12
15 окт. atsakymą pateikė Fr0sT 15 okt. 2012-10-15 09:57 '12 ne 9:57 2012-10-15 09:57

Manau, galite naudoti šią komandą: git reset --hard

10
27 апр. Josnidhin atsakymas, pateiktas balandžio 27 d 2011-04-27 19:10 '11, 19:10, 2011-04-27 19:10

Atkreipkite dėmesį, kad vis dar gali būti failų, kurie, atrodo, nėra išnykę, jie gali būti neištrinti, bet git gali juos pažymėti kaip redaguotinus dėl CRLF / LF pakeitimų. Pažiūrėkite, ar neseniai atlikote kai kuriuos .gitattributes pakeitimus.

Mano atveju pridėjau CRLF nustatymus į .gitattributes failą, todėl visi failai liko „pakeistų failų“ sąraše. Nustatymų keitimas Gitattributes juos išnyko.

4
19 июля '16 в 13:07 2016-07-19 13:07 atsakymą pateikė Rob Quist, liepos 16, 16 d., 13:07 2016-07-19 13:07

Saugus ir ilgas kelias:

  • git branch todelete
  • git checkout todelete
  • git add .
  • git commit -m "I did a bad thing, sorry"
  • git checkout develop
  • git branch -D todelete
-2
19 нояб. Atsakymą pateikė Jason Lemay lapkričio 19 d 2013-11-19 05:08 '13, 5:08 2013-11-19 05:08

Naudoti:

 git reset HEAD filepath 

Pavyzdžiui:

 git reset HEAD om211/src/META-INF/persistence.xml 
-3
09 февр. Aniket atsakymas, pateiktas vasario 9 d. 2015-02-09 16:18 '15 at 16:18 2015-02-09 16:18

Paprastai naudoju šį metodą, kuris veikia gerai:

 mv fold/file /tmp git checkout fold/file 
-3
08 апр. Atsakymas, kurį pateikė thinkhy 08 Apr. 2016-04-08 10:17 '16 at 10:17 2016-04-08 10:17

Kiti klausimai apie žymes arba Ask a Question