Paano tanggihan ang di-tiyak na mga pagbabago sa Git?

Paano ko aalisin ang mga pagbabago sa aking nagtatrabaho kopya na hindi nakalista sa index?

3956
09 сент. Readonly set Septiyembre 9. 2008-09-09 22:33 '08 at 10:33 pm 2008-09-09 22:33
@ 32 mga sagot
  • 1
  • 2

Isa pang mabilis na paraan:

 git stash save --keep-index --include-untracked 

Hindi mo kinakai>--include-untracked isama --include-untracked kung hindi mo nais na maging --include-untracked isama --include-untracked .

Pagkatapos nito ay maaari mong i-reset ang stamp na ito gamit ang git stash drop command kung gusto mo.

2225
09 сент. sumagot na ibinigay ni Greg Hewgill Setyembre 09 2008-09-09 22:39 '08 at 10:39 pm 2008-09-09 22:39

Para sa lahat ng hindi naka-install na mga file, gamitin ang:

 git checkout -- . 

Para sa isang tukoy na paggamit ng file:

border=0
 git checkout path/to/file/to/revert 

Tiyaking tukuyin ang panahon sa dulo.

4303
09 сент. Ang sagot ay ibinigay Tobi 09 Setyembre. 2008-09-09 22:37 '08 at 10:37 pm 2008-09-09 22:37

Mukhang ang kumpletong solusyon:

 git clean -df git checkout -- . 

git clean nag-aalis ng lahat ng mga hindi pinoproseso na file ( babala ), habang hindi nito binubura ang mga binabalewa>maaari itong alisin ang mga binabalewala na mga file sa mga folder ), at ang git checkout nililimas ang lahat ng hindi nabanggit na mga pagbabago.

1643
29 авг. Tumugon na ibinigay ni Mariusz Nowak Agosto 29. 2012-08-29 21:28 '12 sa 21:28 2012-08-29 21:28

Sinusuri nito ang kasalukuyang index para sa kasalukuyang direktoryo, na tinatapon ang lahat ng mga pagbabago sa mga file mula sa kasalukuyang direktoryo.

 git checkout . 

o ito, na sumusuri sa lahat ng mga file mula sa index, pinapalitan ang mga gumaganang file ng puno.

 git checkout-index -a -f 
283
20 июня '09 в 13:28 2009-06-20 13:28 ang sagot ay ibinigay sa pamamagitan ng CB Bailey sa Hunyo 20, '09 sa 13:28 2009-06-20 13:28
 git clean -df 

Linisin ang nagtatrabaho puno sa pamamagitan ng recursively pagtanggal ng mga file na hindi sa ilalim ng kontrol ng bersyon, na nagsisimula sa kasalukuyang direktoryo.

-d : tanggalin ang mga hindi kinakai>

-f : Force (maaaring hindi kinakai>clean.requireForce )

Patakbuhin ang git help clean upang tingnan ang tutorial.

218
07 дек. Sumagot na ibinigay ni Elvis Ciotti Disyembre 7 2011-12-07 16:09 '11 sa 16:09 2011-12-07 16:09

Aking paborito

 git checkout -p 

Ito ay nagpapahintulot sa iyo na piliin nang pabalik ang mga piraso.

Tingnan din ang:

 git add -p 
85
10 окт. sumagot na ibinigay Ben Oct 10 2014-10-10 15:31 '14 sa 15:31 2014-10-10 15:31

Dahil wa>

 git clean -dfx git checkout . 

Ito ang online help text para sa git clean pagpipilian sa git clean ginamit:

-d

Tanggalin ang mga hindi kinakai>-f pagpipilian nang dalawang beses kung gusto mo talagang alisin ang naturang direktoryo.

-f

Kung ang Git clean.requireForce variable na configuration ay hindi naka-set sa false , Git clean ay tatangging tanggalin ang mga file o direktoryo maliban kung -f , -n o -i tinukoy. Ang Git ay tatangging tanggalin ang mga direktoryo sa isang .git subdirectory o file kung hindi -f pangalawang -f .

-x

Huwag gamitin ang huwag pansinin ang mga panuntunan mula sa. .gitignore (para sa bawat direktoryo) at $GIT_DIR/info/exclude , ngunit ginagamit pa rin ang huwag pansinin ang mga tuntunin na tinukoy sa mga opsyon na -e . Pinapayagan ka nitong tanggalin ang lahat ng mga hindi na-proseso na file, kabi>git reset ) upang lumikha ng isang direktang direktoryo ng trabaho upang suriin para sa isang malinis na build.

Bi>git checkout. Dapat ay tatakbo sa ugat ng repo.

68
28 апр. Sumagot na ibinigay ni Martin G 28 Abr. 2016-04-28 22:46 '16 sa 10:46 ng 2016-04-28 22:46

Talagang natagpuan ko ang artikulong ito na kapaki-pakinabang para ipaliwanag kung kailan gamitin ang utos na: http://www.szakmeister.net/blog/2011/oct/12/reverting-changes-git/

Mayroong iba't ibang mga kaso:

  • Kung hindi mo inilagay ang file, gamitin ang git checkout . Checkout "ina-update ang mga file sa gumaganang puno ayon sa bersyon sa index". Kung ang mga file ay hindi naihatid (din idinagdag sa index) ... ang utos na ito ay mahalagang ibalik ang mga file sa kung ano ang iyong huling pag-aayos.

    git checkout -- foo.txt

  • Kung inilagay mo ang file, gamitin ang git reset. I-reset ang mga pagbabago sa index ayon sa pag-aayos.

    git reset -- foo.txt

Pinaghihinalaan ko na ang paggamit ng git stash ay isang popular na pagpipilian, dahil ito ay isang bit mas mapanganib. Maaari mong palaging bumalik dito kung hindi mo sinasadyang tanggalin ang masyadong maraming kapag gumagamit ng git reset. I-reset ang recursive bi>

Tingnan ang artikulo sa itaas para sa higit pang mga tip.

53
14 авг. ang sagot ay ibinigay blak3r 14 aug. 2012-08-14 00:31 '12 sa 0:31 2012-08-14 00:31

Ang pinakamadaling paraan upang gawin ito ay ang paggamit ng utos na ito:

Ang utos na ito ay ginagamit upang i-undo ang mga pagbabago sa direktoryo ng nagtatrabaho -

 git checkout -- . 

https://git-scm.com/docs/git-checkout

Sa command ng git, ang malagkit na mga file ay nakamit gamit ang:

 git stash -u 

http://git-scm.com/docs/git-stash

45
12 апр. Sumagot AHM Forhadul Islam Abr 12 2017-04-12 12:27 '17 sa 12:27 2017-04-12 12:27

Kung hindi ka interesado sa pag-save ng hindi natukoy na mga pagbabago (lalo na kung ang phased pagbabago ay mga bagong file), natagpuan ko na maginhawa:

 git diff | git apply --reverse 
41
28 июля '11 в 8:27 2011-07-28 08:27 ang sagot ay ibinigay ni Joshua Kunzmann Hulyo 28, '11 sa 08:27 2011-07-28 08:27

Habang nagpapasok ka ng git status (gamitin ang "git checkout -..." upang itapon ang mga pagbabago sa direktoryo ng nagtatrabaho) .

halimbawa. git checkout -- .

39
17 мая '16 в 14:27 2016-05-17 14:27 ang sagot ay ibinigay ng Erdem ÖZDEMİR Mayo 17, '16 sa 14:27 2016-05-17 14:27

git checkout -f


man git-checkout :

-f, --force

Kapag lumipat ng mga sanga, patuloy na magtrabaho, kahit na ang index o working tree ay naiiba mula sa HEAD. Ginagamit ito upang alisin ang mga lokal na pagbabago.

Kapag tinitingnan ang mga landas mula sa index, huwag mabigo para sa hindi awtorisadong mga entry; sa halip, binabalewala ang hindi pinansin na mga entry.

38
17 мая '14 в 5:28 2014-05-17 05:28 ang sagot ay ibinigay Bijan Mayo 17, '14 sa 5:28 2014-05-17 05:28

Maaari mong gamitin ang git stash - kung may mali ang isang bagay, maaari ka pa ring bumalik mula sa iyong wallet. Tulad ng ibang sagot dito, ngunit tinatanggal din nito ang lahat ng na-uninstall na mga file, pati na rin ang lahat ng na-uninstall ay nagtanggal:

 git add . git stash 

kung titingnan mo na ang lahat ay mabuti, i-drop ang cache:

 git stash drop 

Ang sagot mula sa Bilal Maqsood gamit ang git clean ay nagtrabaho rin para sa akin, ngunit sa aplikasyon ay may higit na kontrol ako - kung hindi ko sinasadyang gawin ito, maaari ko pa ring ibalik ang aking mga pagbabago

I-UPDATE

Sa tingin ko may isa pang pagbabago (hindi ko alam kung bakit ito nagtrabaho para sa akin bago):

git add . -A git add . -A halip na git add .

wa>-A tinanggal na mga file ay hindi mailagay

33
11 сент. Ang sagot ay binibigyan ng Asped Setyembre 11 2015-09-11 14:59 '15 sa 2:59 ng hapon 2015-09-11 14:59

Sa halip na itapon ang mga pagbabago, i-reset ko ang aking console sa simula. Tandaan Ang pamamaraan na ito ay dinisenyo upang lubos na ibalik ang iyong folder gamit ang repo.

Samakatuwid, ginagawa ko ito upang matiyak na hindi sila umupo doon kapag ako git reset (mamaya - hindi kasama ang gitignores sa Origin / branchname)

TANDAAN. Kung nais mo ang mga file na hindi masusubaybayan pa, ngunit hindi sa GITIGNORE, maaari mong laktawan ang hakbang na ito, dahil ito ay sirain ang mga di-fossil na mga file na hindi natagpuan sa remote repository (salamat sa @ XtrmJosh).

 git add --all 

Pagkatapos ko

 git fetch --all 

Pagkatapos ay i-reset ko sa simula

 git reset --hard origin/branchname 

Ito ay ibabalik ito sa parisukat. Tulad ng RE-cloning ng isang sangay, habang, nagse-save ang lahat ng aking mga gitignored file nang lokal at sa lugar.

Nai-update sa komento ng user sa ibaba: Baguhin upang i-reset para sa anumang kasalukuyang sangay kung saan pinagana ang user.

 git reset --hard @{u} 
31
08 авг. Ang sagot ay ibinigay sa Nick 08 aug. 2015-08-08 00:15 '15 sa 0:15 2015-08-08 00:15

Kung gusto mo lamang tanggalin ang mga pagbabago sa mga umiiral nang file , gamitin ang checkout ( dokumentado dito ).

 git checkout -- . 
  • Wa>
  • Ang double hyphen ( -- ) ay nagsasabi sa Geeta na dapat sundin ang mga sumusunod para sa kanyang pangalawang argument (landas), na napalampas mo ang pagtutukoy ng sangay.
  • Panahon ( . ) Ipinapahiwatig ang lahat ng landas.

Kung gusto mong tanggalin ang mga file na idinagdag mula noong huling gumawa, gamitin ang clean ( dokumentado dito ):

 git clean -i 
  • Ang -i nagsisimula ng isang clean interactive upang maiwasan ang maling mga pagtanggal.
  • Mayroong i>

Kung gusto mong ilipat ang mga pagbabago sa espasyo ng imbakan para sa pag-access sa ibang pagkakataon , gamitin ang stash ( dokumentado dito ):

 git stash 
  • Ang lahat ng mga pagbabago ay ililipat sa Git Stash para sa posibleng kasunod na pag-access.
  • Maraming mga pagpipilian ay magagamit para sa finer stashing; tingnan ang dokumentasyon.
25
18 марта '18 в 3:19 2018-03-18 03:19 Ang sagot ay ibinigay ng jtheletter sa Marso 18 '18 sa 3:19 2018-03-18 03:19

Sinubukan ko ang lahat ng mga solusyon sa itaas, ngunit hindi pa rin mapupuksa ang bagong mga na-uninstall na file.

Gumamit ng git clean -f upang alisin ang mga bagong file na ito - may pag-iingat! Bigyang-pansin ang parameter ng kapangyarihan.

25
15 окт. reply na ibinigay ni artur Oct 15 2011-10-15 00:07 '11 sa 0:07 2011-10-15 00:07

sabihin >

 git stash 

Tatanggalin nito ang lahat ng iyong mga lokal na pagbabago. Maaari mo ring gamitin sa ibang pagkakataon sa pamamagitan ng pagsasabi

 git stash apply 

o git stash pop

20
24 апр. sagot na ibinigay ng piyushmandovra sa Abril 24 2015-04-24 15:19 '15 sa 15:19 2015-04-24 15:19

Gamitin lamang ang:

 git stash -u 

Tapos na. Madali

Kung talagang nagmamalasakit ka sa iyong stack stack, maaari kang sumunod sa git stash drop . Ngunit sa sandaling ito ay mayroon kang mas mahusay na paggamit (mula sa Mariusz Nowak):

 git checkout -- . git clean -df 

Gayunpaman, gusto ko ang git stash -u pinakamahusay, dahil ito "tinatapon" ang lahat ng sinusubaybayan at hindi pa nasusulat na mga pagbabago sa isang command lamang. Still git checkout -- . git clean -df lamang ang sinusubaybayan na mga pagbabago, at ang git clean -df lamang ang mga hindi nababago na mga pagbabago ... at ang pagpasok ng parehong mga command ay masyadong maraming trabaho :)

20
08 сент. Sumagot na ibinigay ni Ben Wilde Setyembre 08 2016-09-08 09:19 '16 sa 9:19 2016-09-08 09:19

Gumagana ito kahit sa mga direktoryo; sa labas ng normal git pahintulot.

 sudo chmod -R 664 ./*  git checkout -- .  git clean -dfx 

Ito ang nangyari kamakailan

16
05 сент. Ang sagot ay ibinigay ng GlassGhost 05 Setyembre. 2013-09-05 12:38 '13 sa 12:38 2013-09-05 12:38
 cd path_to_project_folder # take you to your project folder/working directory git checkout . # removes all unstaged changes in working directory 
14
30 мая '14 в 12:26 2014-05-30 12:26 ang sagot ay ibinigay vivekporwal04 Mayo 30, '14 sa 12:26 2014-05-30 12:26

Hindi mahalaga kung anong estado ang iyong repo ay nasa, maaari mong palaging i-reset ang lahat ng mga nakaraang pag-aayos:

 git reset --hard <commit hash> 

Bawiin nito ang lahat ng mga pagbabago na ginawa pagkatapos ng paggawa nito.

10
05 февр. ang sagot ay binibigyan ng msangel 05 feb . 2016-02-05 03:59 '16 sa 3:59 2016-02-05 03:59

Ang isa pang paraan upang mapupuksa ang mga bagong file na mas tiyak kaysa sa git clean -df (ito ay magbibigay-daan sa iyo upang mapupuksa ang i>

Ang pamamaraan na ito ay kapaki-pakinabang kapag para sa i>

10
15 июня '12 в 11:55 2012-06-15 11:55 ang sagot ay ibinigay tjb Hunyo 15 '12 sa 11:55 2012-06-15 11:55

Sa palagay ko

 git clean -df 

gotta gawin ang bilis ng kamay. Ayon sa git clean git dokumentasyon

git-clean - alisin ang mga unprocessed file mula sa gumaganang puno

Paglalarawan

Linisin ang nagtatrabaho puno sa pamamagitan ng recursively pagtanggal ng mga file na hindi sa ilalim ng kontrol ng bersyon, na nagsisimula sa kasalukuyang direktoryo.

Karaniwan, tanging ang mga file na hindi kilala sa git ay tinanggal, ngunit kung ang -x na pagpipilian ay ginagamit, ang mga file ay binabalewala din. Ito ay maaaring, halimbawa, maging kapaki-pakinabang para sa pag-alis ng lahat ng mga produkto ng pagpupulong.

Kung may anumang mga opsyonal na argumento ay ibinibigay ... lamang ang mga landas na iyon ay apektado.

Mga Opsyon

-D Tanggalin ang mga hindi kinakai>

-f --force Kung ang git clean.requireForce configuration variable ay hindi naka-set sa false, git clean ay tumangging magsimula kung -f, -n, o -i ay hindi tinukoy.

9
14 июля '16 в 10:03 2016-07-14 10:03 ang sagot ay ibinigay sa Lahiru Hulyo 14, '16 sa 10:03 2016-07-14 10:03

Ang sumusunod ay talagang isang solusyon lamang kung nagtatrabaho ka sa plaka ng repository, kung saan ka regular na magsi-synchronize (halimbawa, isang kahilingan sa paglipat) sa isa pang repo. Ang maikling sagot ay: alisin ang tinidor at pag-refine, ngunit basahin ang mga babala ng github .

Ako ay may isang katulad na problema, marahil ay hindi katulad, at ako ay malungkot na sabihin na ang aking solusyon ay hindi perpekto, ngunit sa katapusan ito ay epektibo.

Gusto ko madalas magkaroon ng git mga mensahe tulad ng mga ito (na kinasasangkutan ng hindi bababa sa 2/4 file):

 $ git status # Not currently on any branch. # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2var.dats # modified: doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2var.dats # # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: doc/PROJECT/MEDIUM/ATS-constraint/constraint_s2Var.dats # modified: doc/PROJECT/MEDIUM/ATS-constraint/parsing/parsing_s2Var.dats 

Ang matalinong mata ay mapapansin na may mga dopplegangers sa mga file na ito, na kung saan ay ang tanging sulat sa kaso ng off. Gayon pa man, at wala akong ideya kung ano ang humantong sa akin sa path na ito upang magsimula (dahil hindi ako gumana sa mga file na ito mula sa upstream repo sa aking sarili), inilipat ko ang mga file na ito. Subukan ang maraming mga solusyon na nakalista sa pahinang ito (at iba pang mga pahina) na tila hindi tumulong.

Naayos ko ang problema sa pamamagitan ng pagtanggal sa aking branched repository at lahat ng mga lokal na repository at pagbalik. Ang nag-iisa ay hindi sapat; Ang upstream ay dapat na pinalitan ng pangalan ang mga file na pinag-uusapan sa mga bagong pangalan ng file. Hangga't wala kang anumang basag na trabaho, wa>

9
05 янв. Ang sagot ay ibinigay ng bbarker 05 jan. 2014-01-05 07:53 '14 sa 7:53 ng 2014-01-05 07:53

Kung gusto mong maglipat ng tseke sa ibang tao:

 # add files git add . # diff all the changes to a file git diff --staged > ~/mijn-fix.diff # remove local changes git reset  git checkout . # (later you can re-apply the diff:) git apply ~/mijn-fix.diff 

[edit] bi>

7
08 июля '13 в 18:07 2013-07-08 18:07 ang sagot ay ibinigay twicejr Hulyo 08 '13 sa 18:07 2013-07-08 18:07

Kung ang lahat ng mga hakbang-hakbang na mga file ay aktwal na naayos, ang sangay ay maaaring i-reset lamang, halimbawa. mula sa iyong GUI na may tatlong pag-click ng mouse: Vetka , I-reset , Oo !

Samakatuwid, kung ano ang madalas kong gawin sa pagsasagawa upang i-undo ang mga hindi nais na lokal na mga pagbabago ay upang ilipat ang lahat ng magagandang bagay at pagkatapos ay i-reset ang branch.

Kung ang mahusay na bagay-bagay ay naayos sa isang gumawa, maaari mong gamitin ang "baguhin ang huling gumawa" upang ibalik ito sa setting o hindi matatag kung nais mong gawin itong isang maliit na naiiba sa dulo.

Maaaring hindi ito ang teknikal na solusyon na hinahanap mo sa iyong problema, ngunit sa palagay ko ito ay isang praktikal na solusyon. Nagbibigay-daan ito sa iyo na piliing i-undo ang mga pagbabago ng hindi matatag, i-reset ang mga pagbabago na hindi mo gusto, at i-save ang mga ginawa mo.

Kaya gumawa >reset ang sangay at baguhin ang huling gumawa .

6
20 марта '15 в 18:38 2015-03-20 18:38 ang sagot ay ibinigay ng user3070485 Marso 20 '15 sa 18:38 2015-03-20 18:38

Maaari kang lumikha ng iyong sariling alias na naglalarawan kung paano gawin ito sa isang mapaglarawang paraan.

Ginagamit ko ang sumusunod na palayaw upang itapon ang mga pagbabago.


Itapon ang mga pagbabago sa (list) na file (s) sa puno ng trabaho

 discard = checkout -- 

Pagkatapos ay maaari mo itong gamitin upang tanggalin ang lahat ng mga pagbabago:

 discard . 

O isang file lamang:

 discard filename 

Kung hindi, kung nais mong i-undo ang lahat ng mga pagbabago, pati na rin ang mga hindi nagamit na mga file, gumagamit ako ng kumbinasyon ng tseke at malinis:

I-clear at itapon ang mga pagbabago at huwag subaybayan ang mga file sa puno ng trabaho

 cleanout = !git clean -df  git checkout -- . 

Samakatuwid, ang paggamit ay simple:

 cleanout 

Magagamit na ngayon sa sumusunod na repository ng Github, na naglalaman ng maraming mga alyas:

5
05 июня '17 в 7:44 2017-06-05 07:44 Ang sagot ay ibinigay ni Pau noong Hunyo 05 '17 sa 7:44 2017-06-05 07:44

Wala sa mga solusyon ang gumagana kung binago mo >

 Mon 23/11 / 2015-15: 16: 34.80 C: \ ... \ work \ checkout \ slf4j +> git status Sa branch SLF4J_1.5.3 Ang mga pagbabago ay hindi itinanghal para gumawa:   (gamitin ang "git add ..." upang i-update kung ano ang gagawin)   (gamitin ang "git checkout - ..." upang itapon ang mga pagbabago sa gumaganang direktoryo) binago: .gitignore binago: LICENSE.txt binago: TODO.txt binago: codeStyle.xml binago: pom.xml binago: version.pl wa>

Ang tanging paraan upang ayusin ito ay ang manu-manong i-reset ang mga pahintulot sa mga nabagong file:

 Mon 23/11 / 2015-15: 25: 43.79 C: \ ... \ work \ checkout \ slf4j +> git status -s |  egrep "^ M" |  cut -c4- |  para / f "usebackq tokens = * delims ="% A in (`more`) gawin chmod 644% ~ A Lunes 23/11 / 2015-15: 25: 55.37 C: \ ... \ work \ checkout \ slf4j +> git status Sa branch SLF4J_1.5.3 wala nang gumawa, malinis na direktoryo ng trabaho Lunes 23/11 / 2015-15: 25: 59.28 C: \ ... \ work \ checkout \ slf4j +> Lunes 23/11 / 2015-15: 26: 31.12 C: \ ... \ work \ checkout \ slf4j +> git diff
5
23 нояб. Ang sagot ay ibinigay ni Malcolm Boekhoff Nobyembre 23. 2015-11-23 07:30 '15 sa 7:30 2015-11-23 07:30

Kung ikaw ay sa kaso ng isang submodule, at wa>

  • Upang alamin kung ano ang problema (marahil ang marumi kaso), gamitin ang:

    git diff

  • Upang alisin ang nakatagong teksto

    git submodule update

5
02 окт. ang sagot ay ibinibigay onalbi 02 oct. 2015-10-02 00:32 '15 sa 0:32 2015-10-02 00:32

Mayroon akong isang kakaibang sitwasyon kapag ang file ay palaging nawawala, ito ay tumutulong sa akin upang malutas.

git rm.gitattributes
git add -A
git reset - hard

5
08 февр. Ang sagot ay ibinigay SDV 08 Peb. 2017-02-08 14:58 '17 sa 2:58 ng hapon 2017-02-08 14:58
  • 1
  • 2

Iba pang mga katanungan tungkol sa tag o Magtanong ng isang Tanong