Az újrabázisolás egy olyan folyamat, amelynek során a kötelezettségvállalásokat újból alkalmazzák egy másik alapútra. Arra használatos, hogy a különböző ágakból végrehajtott véglegesítések sorozatát alkalmazza a végső véglegesítésbe. Ez a git merge parancs alternatívája. Ez egy lineáris összeolvadási folyamat.
A Gitben a rebase kifejezés az a folyamat, amikor a véglegesítések sorozatát egy új alap véglegesítéssé mozgatják vagy kombinálják. Az alapozás nagyon előnyös, és a folyamatot egy szolgáltatáselágazó munkafolyamat környezetében jelenítette meg.
Az összevonás előtt célszerű az ágat újrabázisolni.
Általában a git merge parancs alternatívája. Az összevonás mindig előre változó rekord. Ehhez képest a rebase lenyűgöző történelem-újraíró eszköz a gitben. Egyenként egyesíti a különböző commitokat.
Tegyük fel, hogy három véglegesítést hajtott végre a fő ágban és hármat a másik teszt nevű ágban. Ha ezt egyesíti, akkor az összes véglegesítést egy időben egyesíti. De ha visszaállítja, akkor lineárisan egyesül. Tekintsük az alábbi képet:
A fenti kép a git rebase működését írja le. A fő ág három véglegesítése lineárisan össze van vonva a tesztág véglegesítéseivel.
Az összevonás a legegyszerűbb módja az ágak integrálásának. Háromirányú egyesítést hajt végre a két legutóbbi ág commit között.
Hogyan Rebase
Amikor néhány véglegesítést egy jellemző ágon (teszt ágon) és néhányat a fő ágon hajtott végre. Bármelyik ágat újra alapozhatja. Használja a git log parancsot a változások nyomon követéséhez (commit history). Jelentkezzen a kívánt ágra, amelyet át szeretne alapozni. Most hajtsa végre a rebase parancsot az alábbiak szerint:
Szintaxis:
$git rebase
Ha ütközések vannak az ágban, oldja meg azokat, és hajtsa végre az alábbi parancsokat a változtatások folytatásához:
$ git status
Állapot ellenőrzésére szolgál,
$git rebase --continue
A fenti paranccsal folytathatja a változtatásokat. Ha ki akarja hagyni a módosítást, a következőképpen ugorhatja át:
import hangya
$ git rebase --skip
Amikor az alapozás befejeződött. Tolja a tárolót az origóhoz. Tekintsük az alábbi példát a git merge parancs megértéséhez.
Tegyük fel, hogy van egy fiókja teszt2 amelyen dolgozik. Ön most a test2 ágban van, és néhány változtatást hajtott végre a projekt fájljában newfile1.txt .
Adja hozzá ezt a fájlt a tárhoz:
$ git add newfile1.txt
Most hajtsa végre a változtatásokat. Használja az alábbi parancsot:
$ git commit -m 'new commit for test2 branch.'
A kimenet így fog kinézni:
[test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+)
Az ág váltása masterre:
$ git checkout master
Kimenet:
smtp internet protokoll
Switched to branch 'master.' Your branch is up to date with 'origin/master.'
Most a mester ágon vagy. Hozzáadtam a módosításokat a fájlomhoz, mondja newfile.txt . Az alábbi paranccsal lehet hozzáadni a fájlt a tárolóhoz.
$ git add newfile.txt
Most véglegesítse a fájlt a változtatásokhoz:
$ git commit -m ' new commit made on the master branch.'
Kimenet:
[master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master)
A naplóelőzmények ellenőrzéséhez hajtsa végre az alábbi parancsot.
$ git log --oneline
Kimenet:
Amint a naplóelőzményekben láthatjuk, új véglegesítés van a fő ágban. Ha át akarom állítani a test2 ágat, mit tegyek? Tekintse meg az alábbi rebase ág forgatókönyvét:
Rebase ág
Ha sok véglegesítésünk van különböző ágakból, és egybe akarjuk egyesíteni. Ehhez két lehetőségünk van, vagy összevonjuk, vagy újra alapozzuk. Jó az ágát újrabázisolni.
A fenti példából kiindulva elköteleztük magunkat a fő ág mellett, és azt a test2 ágra szeretnénk alapozni. Lássuk az alábbi parancsokat:
$ git checkout test2
Ez a parancs átkapcsolja a test2 ágat a mesterről.
Kimenet:
Switched to branch 'test2.'
Most a test2 ágon vagy. Ezért a test2 ágat újra alapozhatja a fő ágra. Lásd az alábbi parancsot:
$ git rebase master
Ez a parancs újra alapozza a test2 ágat, és így fog megjelenni Jelentkezés: új véglegesítés a test2 ágon . Vegye figyelembe az alábbi kimenetet:
Kimenet:
Git Interactive Rebase
A Git az Interactive Rebase segítségével megkönnyíti; ez egy hatékony eszköz, amely különféle műveleteket tesz lehetővé, mint pl szerkeszteni, átírni, átrendezni, és még többet a meglévő commitokról. Az Interaktív Rebase csak az aktuálisan kivett ágon üzemeltethető. Ezért állítsa be a helyi HEAD ágat az oldalsávon.
A Git interaktív rebase rebase paranccsal hívható meg, csak írja be -én rebase paranccsal együtt. Itt ' én ' az interaktív rövidítése. A parancs szintaxisa az alábbiakban látható:
Szintaxis:
$ git rebase -i
Felsorolja az összes elérhető interaktív lehetőséget.
Kimenet:
módszerek java-ban
Az adott kimenet után megnyílik egy szerkesztő az elérhető opciókkal. Vegye figyelembe az alábbi kimenetet:
Kimenet:
Amikor végrehajtjuk a git interaktív rebase parancsot, az meg fogja nyitni az alapértelmezett szövegszerkesztőt a fenti kimenettel.
Az alábbiakban felsoroljuk a benne található lehetőségeket:
- Szed
- Átfogalmaz
- Szerkesztés
- Fallabda
- Elhelyez
- Exec
- Szünet
- Csepp
- Címke
- Visszaállítás
- Összeolvad
A fenti opciók speciális feladataikat a git-rebase segítségével hajtják végre. Röviden értsük meg ezeket a lehetőségeket.
Kiválasztás (-p):
Itt válassza ki a commit-ot. A véglegesítések sorrendje a pick parancsok sorrendjétől függ az újrabázis alatt. Ha nem akar véglegesítést hozzáadni, törölnie kell a teljes sort.
Újrafogalmazás (-r):
Az átfogalmazás nagyon hasonlít a pick parancshoz. Az újrafogalmazás opció szünetelteti az újraalapozási folyamatot, és lehetőséget ad a véglegesítési üzenet módosítására. Ez nem érinti a commit által végrehajtott változtatásokat.
Szerkesztés(ek):
A szerkesztés opció lehetővé teszi a véglegesítés módosítását. A módosító eszközök, kötelezettségek hozzáadhatók vagy teljesen megváltoztathatók. További véglegesítéseket is végezhetünk az újrabázis folytatási parancs előtt. Lehetővé teszi számunkra, hogy egy nagy kötelezettséget kisebbre bontsunk; sőt eltávolíthatjuk a véglegesítés során végrehajtott hibás változtatásokat.
Squash (-k):
A squash opció lehetővé teszi, hogy két vagy több commit egyetlen véglegesítésben kombináljon. Lehetővé teszi azt is, hogy új véglegesítési üzenetet írjunk a változások leírására.
Javítás (-f):
Nagyon hasonlít a squash parancshoz. Elvetette az összevonandó kötelezettség üzenetét. A régebbi véglegesítési üzenet mindkét változás leírására szolgál.
Végrehajtás (-x):
Az exec opció lehetővé teszi tetszőleges shell parancsok futtatását a véglegesítés ellen.
Szünet (-b):
A törés opció leállítja az alapozást a megfelelő pozícióban. Később folytatja az alapozást a következővel: git rebase --folytatás ' parancsot.
Drop (-d):
A drop opció a véglegesítés eltávolítására szolgál.
Címke (-l):
A címke opció az aktuális fejpozíció névvel való megjelölésére szolgál.
Visszaállítás (-t):
A reset opció a fej visszaállítására szolgál egy címkére.
java tömb rendezés
GitMerge kontra Rebase
A git felhasználók leggyakoribb rejtélyes kérdése, hogy mikor kell használni a merge parancsot és mikor a rebase-t. Mindkét parancs hasonló, és mindkettő a lerakat különböző ágai által végzett véglegesítések egyesítésére szolgál.
Az alapozás nem ajánlott megosztott ágban, mert az újrabázisolási folyamat következetlen lerakatokat hoz létre. Magánszemélyek számára az alapozás hasznosabb lehet, mint az összevonás. Ha szeretné látni a teljes előzményeket, használja az egyesítést. A Merge nyomon követi a véglegesítések teljes történetét, míg a rebase átír egy újat.
A Git rebase parancsok a git merge alternatívájaként szerepelnek. Van azonban néhány lényeges különbségük:
Git Merge | Git Rebase |
---|---|
Az egyesítés végső véglegesítést hoz létre az egyesítéskor. | A Git rebase nem hoz létre véglegesítést az újraalapozáskor. |
Az összes véglegesítést egyetlen véglegesítésként egyesíti. | Létrehozza a véglegesítések lineáris sávját. |
Grafikus előzményeket hoz létre, amelyek megértése kissé bonyolult lehet. | Lineáris történelmet hoz létre, amely könnyen érthető. |
Két ág összevonása biztonságos. | A Git 'rebase' a súlyos művelettel foglalkozik. |
Az összevonás végrehajtható állami és magánágakban egyaránt. | Rossz választás az állami fióktelepeken történő átbázisolás alkalmazása. |
Az összevonás integrálja a jellemző ág tartalmát a fő ággal. Tehát a fő ág megváltozik, és a jellemző ág története állandó marad. | A fő ág újbóli alapozása hatással lehet a jellemző ágra. |
Az összevonás megőrzi a történelmet. | Az alapozás átírja a történelmet. |
A Git Merge minden ütközést egyszerre jelenít meg. | A Git rebase egyenként jeleníti meg az ütközéseket. |