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.
-
git checkout b3d92c5
Az utolsó használható elkötelezettség ellenőrzése. -
git checkout -b repair
Hozzon létre egy új ágat, amelyen dolgozik. -
git cherry-pick 77b9b82
Futtassa a 3. kötelezettségvállalást. -
git cherry-pick 2c6a45b
Futtatás az 1. kötelezettségvállalással. -
git checkout master
Checkout master. -
git reset --hard b3d92c5
A mester visszaállítása az utolsó használható elkötelezettségre. -
git merge repair
Egyesítse új águnkat a mesterbe. -
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!