Git-kötelezettség törlése

A Gittel való együttműködés során azt tapasztalhatja, hogy néha el kell távolítani a kötelezettségeket, mivel hibát vezettek be, vagy át kell dolgozni.

Ha ez így van az utolsó elkötelezettség ez nagyon egyértelmű. Egyszerűen futtassa:

git reset HEAD^

Ez felugrik a legutóbbi elkötelezettségről, de a fájlokban végrehajtott összes módosítás érintetlen marad.

Ha nem csak az utolsó kötelezettségvállalást kell törölnie, akkor kétféle módszert használhat. Az első az újrabázist használja, ez lehetővé teszi egy vagy több egymást követő elkötelezettség eltávolítását, a másik pedig a cseresznyeválasztás, amely lehetővé teszi a nem egymást követő elkötelezettségek eltávolítását.

Példa git naplóra

Szám Hash Üzenet végrehajtása Szerző
1 2c6a45b (HEAD) Nyilvános módszer hozzáadása a védett módszer eléréséhez Tom
2 ae45fab Az adatbázis-felület frissítései 1. vállalkozó
3 77b9b82 Az adatbázis-felület javítása Vállalkozó 2
4 3c9093c Egyesített fejlesztési ág masterré Tom
5 b3d92c5 Új esemény CMS modul hozzáadása Pál
6 7feddbb CMS osztály és fájlok hozzáadása Tom
7 a809379 Projekt hozzáadása a Githez Tom

A Rebase használata

A fenti git napló használatával el akarjuk távolítani a következő parancsokat; 2 & 3 (ae45fab & 77b9b82). Mivel ezek egymást követő elkötelezettségek, használhatjuk a rebase-t. / div> 3 fent

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

Cherry Pick használata

1. lépés: Keresse meg az elkötelezettséget az elkötelezettség előtt el akarja távolítani a git log

2. lépés: Pénztár, amely elköveti a git checkout <commit hash>

3. lépést : Hozzon létre egy új fiókot a jelenlegi fizetési kötelezettségvállalással git checkout -b <new branch>

4. lépés: Most hozzá kell adnia a véglegesítést az eltávolított kötelezettségvállalás után git cherry-pick <commit hash>

5. lépés: Most ismételje meg a 4. lépést az összes többi megtartandó elkötelezettségnél.

6. lépés: Miután minden elkötelezettség hozzá lett adva az új fiókhoz, és elkötelezték magukat. Ellenőrizze, hogy minden a megfelelő állapotban van-e és megfelelően működik-e. Ellenőrizze még egyszer, hogy mindent elkövettek: git status

7. lépés: Váltson törött ágra git checkout <broken branch>

8. lépés: Most hajtson végre kemény törlést a megszakadt ágon az előtt, amelyet el akar távolítani git reset --hard <commit hash>

9. lépés: Egyesítse a rögzített elágazás ebbe az ágba git merge <branch name>

10. lépés: Tolja vissza az egyesített változásokat az eredetre. FIGYELEM: Ez felülírja a távoli repót! git push --force origin <branch name>

A folyamatot új ág létrehozása nélkül is megteheti, ha a 2. lépést & 3 lecseréli a 8. lépésre, majd ne hajtsa végre a 7. lépést & 9.

Példa

Tegyük fel, hogy el akarjuk távolítani a 2-es elkövetéseket & 4 a repótól.

  1. git checkout b3d92c5 Az utolsó használható elkötelezettség ellenőrzése.
  2. git checkout -b repair Hozzon létre egy új ágat, amelyen dolgozik.
  3. git cherry-pick 77b9b82 Futtassa a 3. kötelezettségvállalást.
  4. git cherry-pick 2c6a45b Futtatás az 1. kötelezettségvállalással.
  5. git checkout master Checkout master.
  6. git reset --hard b3d92c5 A mester visszaállítása az utolsó használható elkötelezettségre.
  7. git merge repair Egyesítse új águnkat a mesterbe.
  8. git push --hard origin master Nyomja a mesteret a távoli repóhoz.

Végső megjegyzés

A Git rebase & cseresznyeválca veszélyes, de nagy teljesítményű olyan megoldások, amelyeket csak utoljára szabad felhasználni opciót, és csak az vállalhatja, aki tudja, mit csinál. Vigyázzon, hogy mindkét megoldás kedvezőtlen hatást gyakorolhat más felhasználókra, akik ugyanazon a táron / ágon dolgoznak.

Végül ne feledje, hogy körültekintően járjon el és sok szerencsét!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük