Egy commit törlése a Gitben olyasmi, amit gyakrabban csinálhat, mint azt várná. Egy ilyen gyakori feladat esetén valószínűleg hasznos lenne egy gyors útmutató.
Ez a cikk megválaszolja a Git-commit törlésének módját és más lehetséges megoldásokat, amelyeket kipróbálhat. Tehát, ha hibát követ el a legutóbbi commit során, vagy szeretné megtisztítani a repó előzményeit, olvassa el, hogy megtudja.
Commit törlése Gitben
A Gitben néhány módon törölheti a véglegesítést. Ha nem akarja vagy nem tudja módosítani a Git commit üzenetet, akkor a leggyakoribb megoldás a „git reset” és a „git revert” parancsok használata.
A „git reset” használatához tegye a következőket:
- Keresse meg a törölni kívánt véglegesítést a git log segítségével.
- Használja a git reset –soft szoftvert [commit hash] hogy visszavonjon egy commit parancsot anélkül, hogy bármit is „nuking” volna.
- Vagy használja a git reset –hardot [commit hash] hogy visszaállítsa a törölni kívánt végleges véglegesítését.
- Cserélje ki[commit hash]” a megcélzott kötelezettségvállalás hashével.
Alternatív megoldásként használhatja a „git rebase -i HEAD~” parancsot is[Number]” az utolsó számú véglegesítés visszaállításához. Cserélje ki [number] a commitok számával. A Git megmutat egy fájlt, amelyet szerkeszthet, és eltávolíthatja azt a véglegesítést, amelyet el szeretne hagyni. Csak akkor tedd ezt, ha még nem hajtottál végre kötelezettséget.
Ez egy egyszerű módszer a felszínen, de legyen óvatos. Véglegesen eltávolítja az összes változtatást a véglegesítésben, miután visszaállította, ezért győződjön meg róla, hogy pontosan ezt szeretné.
Alternatív megoldásként használhatja a „git revert” parancsot is:
- Ha meg szeretné tartani a változtatásokat a munkakönyvtárában, használja a git revert parancsot [commit hash]. Ez a parancs egy új véglegesítést hoz létre, amely visszavonja az Ön által megadott véglegesítés módosításait.
- A visszaállítás után tolja el a módosításokat a távoli tárolóba a git push segítségével.
Íme egy másik alternatíva arra az esetre, ha több konkrét véglegesítést szeretne törölni:
- Használd a git checkout-ot [last commit hash] hogy ellenőrizze az utolsó commit, amelynek meg kell maradnia.
- Hozzon létre egy új ágat a git checkout -b javítással.
- Futtassa a git cherry-picket [specific commit hash] az első megőrizni kívánt kötelezettségvállalásnál.
- Ismételje meg a többi megőrzendő commit esetében is.
- Futtassa a git checkout mastert a checkout masterhez.
- Állítsa vissza a mestert az utolsó használható véglegesítésre a git reset –hard segítségével [last commit hash].
- Egyesítse az új ágat a masterhez a git merge javítással.
- Ezután futtassa a git push -f origin master parancsot a távoli küldéshez.
Mikor kell törölnie a kötelezettségvállalásokat
Van néhány olyan helyzet, amikor a kötelezettségvállalás eltávolítása a legjobb dolog. Itt van néhány közülük.
Rossz kód
Az egyik leggyakoribb ok, amiért meg akarsz szabadulni a véglegesítéstől, az az, hogy a benne lévő kód egyszerűen nem vágja le. Lehet, hogy hibát követett el, és elölről akarja kezdeni, vagy talán rájött, hogy az eredmény nem egyezik azzal, amit elérni akar. Például előfordulhat, hogy hozzáadott egy függvényt, amely ütközik a kód egy másik részével. A véglegesítés törlésével visszatérhet, kijavíthatja a problémát, majd újra véglegesítheti a javított verziót.
Ha éppen most követett el egy kóddarabot, majd szembetűnő hibát észlelt, például hibát vagy kódrészletet, amelynek nem kellett volna ott lennie, de nincs ideje kijavítani – ez jó ok a véglegesítés törléséhez. Ahelyett, hogy hagyná, hogy ez a szükségtelen vagy hibás kódrészlet bekerüljön a projekt történetébe (és potenciálisan zavart vagy akár katasztrofális hibákat okozzon a hibajavításban), törölheti ezt a véglegesítést. Ezzel tisztán tartja a projektet.
Érzékeny adatok
Az érzékeny adatok véletlen elküldése gyakrabban történik, mint gondolná. Nem meglepő módon ez jelentős biztonsági kockázatot jelenthet, akár személyes, akár vállalati szempontból. A jelszavaktól és API-kulcsoktól a személyes adatokig bármi rejtetten az Ön kötelezettségvállalásába kerülhet. És amint kint van a projektterületen, bárki hozzáférhet, és potenciálisan megsértheti az Ön vagy csapata biztonságát.
Ezek a balesetek talán még jobb okok a kötelezettségvállalás törlésére, mint a puszta rossz kód. Kiszerkesztheti a hibás kódot, és nem kell aggódnia amiatt, hogy az a projekt előzményeiben marad, de ez nem olyan kockázat, amelyet érzékeny adatokkal szeretne vállalni. Például, ha véletlenül véglegesít egy API-kulcsokat tartalmazó fájlt, a véglegesítés eltávolítása megakadályozza, hogy ez a kulcs rossz kezekbe kerüljön.
Az előzmények tisztán tartása
Egy másik szilárd indok a Git-commit törlésére az, hogy a projektelőzményeket tisztán és egyszerűn kell tartani. Ahogy dolgozik a projekten, a véglegesítési előzmények egyre zsúfoltabbak lesznek kisebb frissítésekkel, kísérletekkel vagy változtatásokkal, amelyek már nem relevánsak. Ha bármilyen okból át akar tekinteni az előzményeken, például arra, hogy kitalálja, miért hajtott végre egy bizonyos változtatást, vagy egy kísérlet után vissza akar térni egy stabil állapotba, a zsúfolt előzmények problémát okozhatnak.
A szükségtelen véglegesítések törlésével a projekt előzményei tisztán tarthatók, és Ön és csapata többi tagja számára könnyen követhetővé válik. Ez még hasznosabb egy ág összevonása előtt, így világos, tömör és releváns előzményeket mutathat be mindenkinek, aki áttekinti a kódot. Például, ha több véglegesítésed van, amelyek csak kisebb módosítások voltak egy szolgáltatáson, érdemes lehet egyetlen véglegesítésbe tömöríteni őket, hogy az előzmények rendben legyenek.
Bevált gyakorlatok és tippek
A véglegesítés törlése előtt kövesse néhány bevált gyakorlatot, hogy projektje működőképes maradjon, és elkerülje a nem kívánt következményeket.
Készítsen biztonsági másolatot a munkájáról
Mielőtt bármilyen véglegesítést törölne a Gitben, jó ötlet biztonsági másolatot készíteni a munkájáról, még akkor is, ha úgy gondolja, hogy nem érdemes megtartani. Ez többletmunkának tűnhet, de a tartalék biztonsági háló arra az esetre, ha a dolgok nem a tervek szerint alakulnak.
Biztonsági másolatot készíthet egy új ág létrehozásával, amely tükrözi a lerakat aktuális állapotát. Például egy új funkciót bevezető véglegesítés törlése előtt hozzon létre egy „feature-backup” biztonsági mentési ágat. Ez megadja a szabadságot a kísérletezésre és a kötelezettségvállalások törlésére anélkül, hogy attól félne, hogy fontos munkát veszít. Tehát, ha később rájössz, hogy szükséged van valamire a törölt commitból, akkor nem veszítetted el végleg. Ha úgy dönt, hogy már nincs szüksége erre a biztonsági másolatra, törölheti a Git ágat.
Ne törölje a nyilvános kötelezettségvállalásokat
Amikor nyilvános lerakatokkal dolgozik, különösen nyílt forráskódú projektekben vagy csapatkörnyezetekben, különösen óvatosnak kell lennie a véglegesítések törlésével kapcsolatban. Ha egy commit egy nyilvános adattárba került, és mások húzták azt, a véglegesítés törlése megzavarhatja vagy elvonhatja az érintettek figyelmét, és megzavarhatja a munkát. Ez egy szőnyeget kihúzni valaki alól – nem kellemes élmény, inkább meggondolatlan. Ha törölnie kell egy már nyilvános kötelezettségvállalást, előzetesen tájékoztassa csapatát vagy a projekt közreműködőit, hogy tudják, mi történik. Így mindenki tisztában van, és ennek megfelelően alakíthatja a munkáját.
Használja a Visszaállítás nyilvános repóhoz
Ha továbbra is szeretné visszavonni a módosításokat egy nyilvános adattárban, ahelyett, hogy véglegesen törölné a véglegesítést, visszaállíthatja az összevonást a Gitben. A git resettől eltérően, amely hatékonyan írja át az előzményeket, a „git revert” új véglegesítést hoz létre, amely visszavonja az előző véglegesítés során végrehajtott változtatásokat.
Ezért ennek a parancsnak a használata sokkal biztonságosabb és átláthatóbb, különösen, ha másokkal dolgozik. Nyíltan kommunikálod a csapattagjaiddal, hogy esetleg hibát követtél el, és visszaadsz egy olyan kötelezettséget, amely kijavítja azt. Ha jelentős hibával hajtott végre egy véglegesítést, a „git revert” lehetővé teszi a hiba hatásainak gyors kiküszöbölését, miközben a projekt történetét érintetlenül hagyja. Ezzel megőrzi a projekttörténet integritását, és mindenki helyi adattárát konzisztensen tartja a távolival.
A törlés előtt ellenőrizze még egyszer
A commit törlésekor az egyik legnagyobb kockázat az, hogy elveszíti az ebbe a véglegesítésbe fordított időt és erőfeszítést. Ennek elkerülése érdekében tekintse át az eltávolítani kívánt véglegesítések összes módosítását. Használja a „git log vagy git show [commit hash]” a kötelezettségvállalások ellenőrzésére. Ha olyan véglegesítést távolít el, amely több funkciót is hozzáadott a kódhoz, győződjön meg arról, hogy a projektnek nincs szüksége ezekre a függvényekre a működéshez, vagy hogy máshol replikálták őket.
Elkötelezettség érte
Számos oka van annak, hogy töröljön egy kötelezettségvállalást a Gitben, például az előzmények rendben tartása, a zavaró hibák megszüntetése vagy az érzékeny adatok védelme a kíváncsiskodó szemektől. Bármi is legyen az ok, ne feledje, hogy ennek két módja van – a „git reset” és a „git revert”, amelyek mindegyike más-más célt szolgál, ezért válassza ki azt, amelyik megfelelő a projektjéhez. A Git ágat át is nevezheti a nagyobb érthetőség érdekében.
Előfordult már, hogy törölnie kellett egy commit a Gitben? Mi volt a tapasztalata, és van valami tippje, amit megosztana? Hagyjon megjegyzést alább, és folytassa a beszélgetést.