Zmena bázy je proces opätovného uplatnenia záväzkov nad rámec inej základnej cesty. Používa sa na aplikovanie postupnosti odovzdania z rôznych vetiev do konečného odovzdania. Je to alternatíva príkazu git merge. Ide o lineárny proces spájania.
V Gite sa termín rebase označuje ako proces presunu alebo kombinovania sekvencie odovzdania do nového základného odovzdania. Rebasing je veľmi prínosný a vizualizoval proces v prostredí pracovného toku vetvenia funkcií.
Svoju ratolesť je dobré pred zlúčením znovu založiť.
Vo všeobecnosti je to alternatíva príkazu git merge. Zlúčenie je vždy dopredu sa meniaci záznam. Na porovnanie, rebase je presvedčivý nástroj na prepisovanie histórie v git. Zlúči rôzne záväzky jeden po druhom.
Predpokladajme, že ste urobili tri potvrdenia vo vašej hlavnej vetve a tri vo vašej ďalšej vetve s názvom test. Ak toto zlúčite, zlúči sa všetky odovzdania naraz. Ak ho však prebudujete, bude lineárnym spôsobom zlúčený. Zvážte nasledujúci obrázok:
Vyššie uvedený obrázok popisuje, ako funguje git rebase. Tri odovzdania hlavnej vetvy sa lineárne zlúčia s odovzdaniami testovacej vetvy.
Zlúčenie je najpriamejším spôsobom integrácie pobočiek. Vykonáva trojcestné zlúčenie medzi dvoma poslednými potvrdeniami vetvy.
Ako Rebase
Keď ste urobili nejaké odovzdania na vetve funkcie (testovacia vetva) a niektoré v hlavnej vetve. Môžete znovu založiť ktorúkoľvek z týchto vetiev. Pomocou príkazu git log môžete sledovať zmeny (históriu potvrdenia). Objednajte si požadovanú pobočku, ktorú chcete obnoviť. Teraz vykonajte príkaz rebase takto:
Syntax:
$git rebase
Ak sa vo vetve vyskytnú nejaké konflikty, vyriešte ich a vykonajte nižšie uvedené príkazy, aby ste mohli pokračovať v zmenách:
$ git status
Používa sa na kontrolu stavu,
$git rebase --continue
Vyššie uvedený príkaz sa používa na pokračovanie vo vykonaných zmenách. Ak chcete preskočiť zmenu, môžete preskočiť takto:
čo je obj v jave
$ git rebase --skip
Keď je rebasing dokončený. Posuňte úložisko do pôvodu. Zvážte nižšie uvedený príklad, aby ste pochopili príkaz git merge.
Predpokladajme, že vám povie pobočka test2 na ktorom pracujete. Teraz ste vo vetve test2 a urobili ste nejaké zmeny v súbore projektu newfile1.txt .
Pridajte tento súbor do úložiska:
$ git add newfile1.txt
Teraz urobte zmeny. Použite nižšie uvedený príkaz:
$ git commit -m 'new commit for test2 branch.'
Výstup bude vyzerať takto:
[test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+)
Prepnite vetvu na master:
$ git checkout master
Výkon:
chrome adresný riadok
Switched to branch 'master.' Your branch is up to date with 'origin/master.'
Teraz ste na hlavnej vetve. Pridal som zmeny do môjho súboru, hovorí newfile.txt . Nasledujúci príkaz sa používa na pridanie súboru do úložiska.
$ git add newfile.txt
Teraz potvrďte zmeny súboru:
$ git commit -m ' new commit made on the master branch.'
Výkon:
[master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master)
Ak chcete skontrolovať históriu protokolov, vykonajte príkaz uvedený nižšie.
$ git log --oneline
Výkon:
Ako vidíme v histórii protokolov, v hlavnej vetve je nový commit. Čo mám robiť, ak chcem obnoviť základ svojej pobočky test2? Pozrite si nižšie uvedený scenár rebase vetvy:
Pobočka Rebase
Ak máme veľa commitov z rôznych vetiev a chceme ich zlúčiť do jednej. Ak to chcete urobiť, máme dve možnosti, buď ich môžeme zlúčiť alebo prebudovať. Svoju ratolesť je dobré znovu založiť.
Z vyššie uvedeného príkladu sme sa zaviazali k hlavnej vetve a chceme ju znova založiť na vetve test2. Pozrime sa na nasledujúce príkazy:
$ git checkout test2
Tento príkaz vás prepne na vetvu test2 z mastera.
Výkon:
Switched to branch 'test2.'
Teraz ste na vetve test2. Preto môžete premeniť vetvu test2 na hlavnú vetvu. Pozrite si nasledujúci príkaz:
$ git rebase master
Tento príkaz obnoví základ vetvy test2 a zobrazí sa ako Uplatňuje sa: nové odovzdanie na vetve test2 . Zvážte nasledujúci výstup:
Výkon:
Git Interactive Rebase
Git uľahčuje interaktívnu rebase; je to účinný nástroj, ktorý umožňuje rôzne operácie ako napr upraviť, prepísať, zmeniť poradie, a ďalšie informácie o existujúcich záväzkoch. Interaktívna Rebase môže byť prevádzkovaná iba na aktuálne odhlásenej pobočke. Preto si na bočnom paneli nastavte svoju lokálnu pobočku HEAD.
Interaktívna rebase Git sa dá vyvolať príkazom rebase, stačí zadať -i spolu s príkazom rebase. Tu ' i ' znamená interaktívny. Syntax tohto príkazu je uvedená nižšie:
Syntax:
$ git rebase -i
Zobrazí zoznam všetkých dostupných interaktívnych možností.
Výkon:
q4 mesiace
Po danom výstupe otvorí editor s dostupnými možnosťami. Zvážte nasledujúci výstup:
Výkon:
Keď vykonáme príkaz git interaktívnej rebase, otvorí sa váš predvolený textový editor s vyššie uvedeným výstupom.
Možnosti, ktoré obsahuje, sú uvedené nižšie:
- Vyzdvihnúť
- Preformulovať
- Upraviť
- Squash
- Opraviť
- Exec
- Prestávka
- Pokles
- Označenie
- Resetovať
- Zlúčiť
Vyššie uvedené možnosti vykonávajú svoje špecifické úlohy pomocou git-rebase. Poďme stručne pochopiť každú z týchto možností.
Vybrať (-p):
Vyberte tu, že je zahrnuté odovzdanie. Poradie potvrdení závisí od poradia príkazov na výber počas rebase. Ak nechcete pridať odovzdanie, musíte vymazať celý riadok.
Preformulovať (-r):
Preformulovanie je dosť podobné príkazu na výber. Voľba preformulovania pozastavila proces zmeny bázy a poskytuje možnosť zmeniť správu odovzdania. Nemá to vplyv na žiadne zmeny vykonané potvrdením.
Úpravy:
Možnosť úpravy umožňuje úpravu odovzdania. Opravné prostriedky, záväzky možno pridať alebo úplne zmeniť. Môžeme tiež vykonať ďalšie potvrdenia pred príkazom rebase continue. Umožňuje nám rozdeliť veľké odovzdanie na menšie odovzdanie; navyše môžeme odstrániť chybné zmeny vykonané v odovzdaní.
Squash (-s):
Možnosť squash vám umožňuje spojiť dva alebo viac odovzdaní do jedného odovzdania. Tiež nám to umožňuje napísať novú správu odovzdania na popis zmien.
Oprava (-f):
Je to dosť podobné príkazu squash. Zahodilo správu o odovzdaní, ktoré sa má zlúčiť. Na popis oboch zmien sa používa staršia správa odovzdania.
Exec (-x):
Voľba exec vám umožňuje spúšťať ľubovoľné príkazy shellu proti odovzdaniu.
Prestávka (-b):
Voľba prerušenia zastaví opätovné zarovnanie v presnej polohe. Bude pokračovať v opätovnom založení neskôr s ' git rebase --pokračovať ' príkaz.
Pokles (-d):
Voľba drop sa používa na odstránenie odovzdania.
Štítok (-l):
Možnosť štítku sa používa na označenie aktuálnej polohy hlavy názvom.
Resetovať (-t):
Možnosť resetovania sa používa na resetovanie hlavy na štítok.
java nemenný zoznam
GitMerge vs. Rebase
Pre používateľov git je najčastejšou záhadnou otázkou, kedy použiť príkaz merge a kedy použiť rebase. Oba príkazy sú podobné a oba sa používajú na zlúčenie odovzdaní vykonaných rôznymi vetvami úložiska.
Opätovné založenie sa v zdieľanej vetve neodporúča, pretože proces preloženia vytvorí nekonzistentné archívy. Pre jednotlivcov môže byť zmena bázy užitočnejšia ako zlúčenie. Ak chcete vidieť celú históriu, mali by ste použiť zlúčenie. Merge sleduje celú históriu potvrdení, zatiaľ čo rebase prepisuje nový.
Príkazy Git rebase uvedené ako alternatíva git merge. Majú však niekoľko kľúčových rozdielov:
Git Merge | Git Rebase |
---|---|
Zlúčením sa vytvorí konečné potvrdenie pri zlúčení. | Git rebase nevytvára žiadne odovzdanie pri rebase. |
Zlúči všetky odovzdania do jedného odovzdania. | Vytvára lineárnu stopu odovzdaní. |
Vytvára grafickú históriu, ktorej pochopenie môže byť trochu zložité. | Vytvára lineárnu históriu, ktorá sa dá ľahko pochopiť. |
Je bezpečné spojiť dve vetvy. | Git 'rebase' sa zaoberá náročnou operáciou. |
Zlúčenie je možné vykonať na verejných aj súkromných pobočkách. | Je nesprávnou voľbou použiť opätovné založenie na verejných pobočkách. |
Zlúčením sa integruje obsah vetvy funkcií s hlavnou vetvou. Hlavná vetva sa teda zmení a história vetvy funkcie zostane konzistentná. | Opätovné založenie hlavnej vetvy môže ovplyvniť vetvu prvkov. |
Zlúčenie zachováva históriu. | Rebasing prepisuje históriu. |
Git merge predstavuje všetky konflikty naraz. | Rebase Git predstavuje konflikty jeden po druhom. |