Brisanje objave v Gitu je nekaj, kar lahko storite pogosteje, kot bi pričakovali. Pri tako običajnem opravilu bi vam verjetno prišel prav hiter vodnik.

Ta članek odgovarja, kako izbrisati potrditev Git in druge možne rešitve, ki jih lahko poskusite. Torej, če naredite napako pri zadnji objavi ali želite počistiti zgodovino svojega repoja, berite naprej, če želite izvedeti.
Brisanje objave v Gitu
Objavo v Gitu lahko izbrišete na več načinov. Če ne želite ali ne morete spremeniti sporočila o potrditvi Git , je najpogostejša rešitev uporaba ukazov »git reset« in »git revert«.
Če želite uporabiti »git reset«, naredite to:
- Z git log poiščite objavo, ki jo želite izbrisati .

- Uporabite git reset –soft [commit hash], da razveljavite ukaz za objavo, ne da bi karkoli »nukirali«.

- Ali pa uporabite git reset –hard [commit hash], da ponastavite na objavo pred tisto, ki jo želite izbrisati.

- Zamenjajte »[commit hash]« z zgoščeno vrednostjo objave, na katero ciljate.
Druga možnost je, da uporabite »git rebase -i HEAD~[Number]« za ponovno bazo zadnjega števila potrditev. Zamenjajte [število] s številom potrditev. Git vam bo pokazal datoteko, ki jo lahko uredite, in odstranite obvezo, ki jo želite odstraniti. To storite le, če še niste pritisnili na potrditev.
To je na videz preprosta metoda, vendar bodite previdni. Trajno odstrani vse spremembe v objavah po tisti, na katero ste jo ponastavili, zato se prepričajte, da je to točno tisto, kar želite.
Lahko pa uporabite »git revert« takole:
- Če želite obdržati spremembe v svojem delovnem imeniku, uporabite git revert [commit hash] . Ta ukaz ustvari novo objavo, ki razveljavi spremembe iz objave, ki jo podate.

- Po vrnitvi potisnite spremembe v oddaljeno skladišče z git push .

Tukaj je še ena alternativa, če želite izbrisati več določenih potrditev:
- Uporabite git checkout [razpršitev zadnje objave], da preverite zadnjo objavo, ki naj ostane.

- Ustvarite novo vejo z git checkout -b repair .

- Zaženite git cherry-pick [posebno zgoščeno vrednost objave] pri prvi objavi, ki jo želite ohraniti.

- Ponovite za druge objave, ki jih želite ohraniti.
- Zaženite git checkout master v checkout master.

- Ponastavi master na zadnjo uporabno objavo z git reset –hard [zgoščena vrednost zadnje objave] .

- Združite novo vejo za obvladovanje z git merge repair .

- Nato zaženite git push -f origin master, da potisnete na daljinski upravljalnik.

Kdaj morate izbrisati objave
Obstaja nekaj situacij, ko je odstranitev objave najboljša stvar. Tukaj je nekaj izmed njih.
Slaba koda
Eden najpogostejših razlogov, zakaj bi se želeli znebiti objave, je ta, da koda v njej preprosto ne reže. Morda ste naredili napako in želite začeti znova ali pa ste ugotovili, da se rezultat ne ujema s tem, kar želite doseči. Na primer, morda ste dodali funkcijo, ki je v nasprotju z drugim delom kode. Če izbrišete to objavo, se lahko vrnete nazaj, odpravite težavo in nato znova potrdite popravljeno različico.
Če ste pravkar dodali kos kode in nato opazili očitno napako, kot je hrošč ali del kode, ki ga ne bi smelo biti, vendar nimate časa, da bi to popravili – to je dober razlog da izbrišete obvezo. Namesto da dovolite, da ta nepotreben ali pomanjkljiv del kode ostane v zgodovini vašega projekta (in potencialno povzroči zmedo ali celo katastrofalne napake pri odpravljanju napak), lahko izbrišete to objavo. S tem bo vaš projekt čist.
Občutljivi podatki
Nenamerno posredovanje občutljivih podatkov se zgodi pogosteje, kot si morda mislite. Ni presenetljivo, da je to lahko veliko varnostno tveganje, tako osebno kot poslovno. Karkoli, od gesel in ključev API do osebnih podatkov, se lahko skrivaj znajde v vaši objavi. In ko je enkrat v projektnem prostoru, lahko kdorkoli dostopa do njega in potencialno krši vašo varnost ali varnost vaše ekipe.
Te nesreče so morda celo boljši razlogi za brisanje objave kot zgolj slaba koda. Napačno kodo lahko uredite in ne skrbite, da bo ostala v zgodovini projekta, vendar to ni tveganje, ki bi ga želeli sprejeti z občutljivimi podatki. Če na primer pomotoma objavite datoteko, ki vsebuje ključe API, odstranitev te objave prepreči, da bi ta ključ padel v napačne roke.
Ohranjanje zgodovine čiste
Še en dober razlog za brisanje Git commita je, da ohranite čisto in preprosto zgodovino projekta. Ko delate na projektu, postane vaša zgodovina odobritev vedno bolj natrpana z manjšimi posodobitvami, poskusi ali spremembami, ki niso več pomembne. Ko želite iz kakršnega koli razloga pregledati zgodovino, na primer da bi ugotovili, zakaj ste naredili določeno spremembo ali se po poskusu vrnili v stabilno stanje, lahko natrpana zgodovina postane težava.
Če izbrišete nepotrebne potrditve, ohranjate svojo zgodovino projekta urejeno in jo lahko preprosto spremljate vi in drugi v vaši ekipi. To je še bolj uporabno pred združitvijo veje, tako da lahko vsakemu, ki pregleda vašo kodo, predstavite jasno, jedrnato in ustrezno zgodovino. Na primer, če imate več obvez, ki so le manjše prilagoditve funkcije, jih boste morda želeli strniti v eno samo obvezo, da bo vaša zgodovina čista.
Najboljše prakse in nasveti
Preden izbrišete potrditev, upoštevajte nekaj najboljših praks, da bo vaš projekt deloval in se izognili nenamernim posledicam.
Varnostno kopirajte svoje delo
Preden izbrišete katero koli objavo v Gitu, je dobro, da naredite varnostno kopijo svojega dela, tudi če mislite, da je morda brez vrednosti, da bi jo obdržali. Morda se zdi dodatno delo, vendar je varnostna kopija varnostna mreža, če stvari ne gredo po načrtih.
Varnostno kopijo lahko ustvarite tako, da naredite novo vejo, ki odraža trenutno stanje vašega skladišča. Na primer, preden izbrišete obvezo, ki je uvedla novo funkcijo, ustvarite rezervno vejo »feature-backup«. To vam bo dalo svobodo eksperimentiranja in brisanja zavez brez strahu pred izgubo pomembnega dela. Torej, če pozneje ugotovite, da potrebujete nekaj iz izbrisane objave, tega niste za vedno izgubili. Če se odločite, da te varnostne kopije ne potrebujete več, lahko izbrišete vejo Git .
Ne izbrišite javnih potrditev
Pri delu z javnimi repozitoriji, zlasti v odprtokodnih projektih ali skupinskih okoljih, morate biti še posebej previdni pri brisanju potrditev. Ko je objava potisnjena v javno skladišče in so jo drugi umaknili, lahko brisanje te objave zmede ali odvrne vse vpletene in moti delo. To je oblika vlečenja preproge izpod nekoga – ni prijetna izkušnja, ampak precej neobzirna. Če morate izbrisati obvezo, ki je že javna, o tem predhodno obvestite svojo ekipo ali sodelavce projekta, da bodo vedeli, kaj se dogaja. Tako so vsi ozaveščeni in lahko temu prilagodijo svoje delo.
Uporabite Povrnitev za javna skladišča
Če še vedno želite razveljaviti spremembe v javnem repozitoriju, lahko namesto trajnega brisanja objave razveljavite spajanje v Gitu . Za razliko od git reset, ki dejansko prepiše zgodovino, "git revert" ustvari novo potrditev, ki razveljavi spremembe, narejene v prejšnji objavi.
Zato je uporaba tega ukaza veliko varnejša in preglednejša, zlasti pri delu z drugimi. Članom svoje ekipe odkrito sporočate, da ste morda naredili napako, in vračate zavezo, ki jo popravlja. Če ste potisnili objavo s pomembno napako, vam »git revert« omogoča, da hitro izničite učinke te napake, hkrati pa ohranite nedotaknjeno zgodovino projekta. S tem ohranjamo celovitost zgodovine projekta in ohranjamo lokalno skladišče vseh skladno z oddaljenim.
Še enkrat preverite pred brisanjem
Eno največjih tveganj pri brisanju obvez v Gitu je izguba časa in truda, ki ste ga vložili v to obvezo. Če želite to preprečiti, preglejte vse spremembe v vsaki objavi, ki jo želite odstraniti. Uporabite »git log ali git show [commit hash]«, da pregledate objave. Če odstranjujete potrditev, ki je vaši kodi dodala več funkcij, se prepričajte, da vaš projekt ne potrebuje teh funkcij za delovanje ali da so podvojene drugje.
Zavzetost za to
Obstaja veliko razlogov za brisanje objave v Gitu, na primer vzdrževanje urejenosti vaše zgodovine, odpravljanje zmedenih napak ali varovanje vaših občutljivih podatkov pred radovednimi očmi. Ne glede na razlog, ne pozabite, da obstajata dva načina za to – »git reset« in »git revert«, pri čemer vsak služi svojemu namenu, zato izberite tistega, ki je pravi za vaš projekt. Za večjo jasnost lahko vejo Git tudi preimenujete .
Ste že kdaj morali izbrisati objavo v Gitu? Kakšne so bile vaše izkušnje in ali želite deliti kakšen nasvet? Spodaj pustite komentar in nadaljujte pogovor.