Odstranjevanje lokalnih sprememb v sistemu Git

Zaradi slabega izbiranja je moj lokalni repozitorij Git trenutno pet sprememb pred izvornim in ni v dobrem stanju. Želim se znebiti vseh teh revizij in začeti znova.

Očitno bi to storil z brisanjem delovnega imenika in ponovnim kloniranjem, toda ponovno prenašanje vsega iz GitHuba se mi zdi pretirano in ni dobra poraba mojega časa.

Morda je git revert tisto, kar potrebujem, vendar nočem končati z 10 spremembami pred izvorom (ali celo šestimi), tudi če se s tem koda vrne v pravo stanje. Želim se samo pretvarjati, da se zadnje pol ure sploh ni zgodilo.

Ali obstaja preprost ukaz, ki bo to naredil? Zdi se, da je to očiten primer uporabe, vendar ne najdem nobenega primera.


Upoštevajte, da se to vprašanje nanaša predvsem na obveze in ne na:

  • datotekah brez sledenja
  • nezaključenih spremembah
  • postavljenih, vendar neoddanih spremembah
Rešitev

Če so odvečne oddaje vidne samo vam, lahko preprosto naredite git reset --hard origin/ da se premaknete nazaj na mesto izvora. To bo stanje skladišča povrnilo na prejšnjo oddajo in bo zavrglo vse lokalne spremembe.

Če izvedete git revert, nove spremembe odstranijo stare spremembe na način, ki ohranja zdravo zgodovino vseh.

Komentarji (11)

Preprosto izbrišite svojo lokalno glavno vejo in jo ponovno ustvarite na naslednji način:

git branch -D master
git checkout origin/master -b master
Komentarji (8)

Poskusite:

git reset --hard 

da ponastavite svojo glavo tja, kjer želite biti. Uporabite gitk, da vidite, pri kateri reviziji želite biti. Ponastavitev lahko izvedete tudi v gitk.

Komentarji (2)