Git-sitoumuksen poistaminen

Kun työskentelet Gitin kanssa, huomaat, että joskus sitoumukset on poistettava, koska ne ovat esittäneet virheen tai ne on käsiteltävä uudelleen.

Jos se on viimeinen sitoutuminen on hyvin suoraviivaista. Suorita vain:

git reset HEAD^

Tämä avaa viimeisimmän sitoutumisen, mutta jättää kaikki tiedostoihisi tekemät muutokset ennalleen.

Jos haluat poistaa enemmän kuin vain viimeisen sitoutumisen, voit käyttää kahta tapaa. Ensimmäinen käyttää uudelleenkäynnistystä, jolloin voit poistaa yhden tai useamman peräkkäisen sitoumuksen, toinen on kirsikka-valinta, jonka avulla voit poistaa ei-peräkkäiset sitoumukset.

Esimerkki git-lokista

Numero Hash Vahvista viesti Kirjoittaja
1 2c6a45b (HEAD) Lisää julkinen menetelmä käyttää suojattua menetelmää Tom
2 ae45fab Tietokantaliittymän päivitykset Urakoitsija 1
3 77b9b82 Tietokantaliittymän parantaminen Urakoitsija 2
4 3c9093c Yhdistetty kehityshaara masteriksi Tom
5 b3d92c5 Uuden tapahtuman CMS-moduulin lisääminen Paul
6 7feddbb CMS-luokan ja tiedostojen lisääminen Tom
7 a809379 Projektin lisääminen Gitiin Tom

Rebasen käyttö

Yllä olevan git-lokin avulla haluamme poistaa seuraavat komennot; 2 & 3 (ae45fab & 77b9b82). Koska ne ovat peräkkäisiä sitoumuksia, voimme käyttää uudelleentallennusta.

git rebase --onto <branch name>~<first commit number to remove> <branch name>~<first commit to be kept> <branch name>

esim. Poistamaan sitoumukset 2 & 3 yllä

git rebase --onto repair~3 repair~1 repair

Cherry Pickin käyttö

Vaihe 1: Etsi sitoutuminen ennen sitoutumista haluat poistaa git log

Vaihe 2: Kassalla, joka sitoutuu git checkout <commit hash>

Vaihe 3 : Luo uusi haara nykyisellä kassalla sitoutuminen git checkout -b <new branch>

Vaihe 4: Nyt sinun on lisättävä sitoutuminen poistetun sitoutumisen jälkeen git cherry-pick <commit hash>

Vaihe 5: Toista nyt vaihe 4 kaikille muille säilytettäville sitoumuksille.

Vaihe 6: Kun kaikki sitoumukset on lisätty uuteen haaraan ja ne ovat on sitoutunut. Tarkista, että kaikki on oikeassa kunnossa ja toimii tarkoitetulla tavalla. Tarkista, että kaikki on tehty: git status

Vaihe 7: Vaihda rikkoutuneeseen haaraan git checkout <broken branch>

Vaihe 8: Suorita nyt rikkoutuneelle haaralle kova palautus sitoutumiselle ennen sitä, jonka haluat poistaa git reset --hard <commit hash>

Vaihe 9: Yhdistä kiinteä haara tähän haaraan git merge <branch name>

Vaihe 10: Työnnä yhdistetyt muutokset takaisin alkuperään. VAROITUS: Tämä korvaa etärepon! git push --force origin <branch name>

Voit tehdä prosessin luomatta uutta haaraa korvaamalla vaiheen 2 & 3 vaiheella 8 älä suorita Vaihe 7 & 9.

Esimerkki

Sano, että haluamme poistaa komennot 2 & 4 reposta.

  1. git checkout b3d92c5 Tarkista viimeinen käyttökelpoinen sitoutuminen.
  2. git checkout -b repair Luo uusi haara työskentelemään.
  3. git cherry-pick 77b9b82 Suorita sitoutumisen 3 läpi.
  4. git cherry-pick 2c6a45b Suorita sitoutuminen 1.
  5. git checkout master Kassan päällikkö.
  6. git reset --hard b3d92c5 Palauta päällikkö viimeiseksi käyttökelpoiseksi sitoutumiseksi.
  7. git merge repair Yhdistä uusi haaramme päälliköksi.
  8. git push --hard origin master Työnnä master etärepoon.

Loppuhuomautus

Git rebase & cherrypick ovat vaarallisia, mutta tehokkaita ratkaisuja, joita tulisi käyttää vain viimeisenä vaihtoehto, ja sen saa suorittaa vain joku, joka tietää mitä tekee. Varo, että molemmilla ratkaisuilla voi olla haitallisia vaikutuksia muille käyttäjille, jotka työskentelevät samalla arkistossa / haarassa.

Muista lopuksi olla varovainen ja onnea!

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *