V tomto článku budem hovoriť o tom, ako funguje Git rebase, rozdiely medzi Git rebase a Git merge a ako pracovať s Git rebase. Takže poďme na to.
Git Rebase:
Povedzme, že máte úložisko Git so záväzkami A, B, C v pán pobočka. Potom ste vytvorili novú vetvu nejaký obor a pridal 2 nové potvrdenia D a E do nejaký obor pobočka.
Obrázok 1: Počiatočná história záväzkov.
Teraz, povedzme, zabudli ste niečo pridať do pán pobočka. Takže sa vrátite k pán vetva a pridať nové potvrdenie G do pán pobočka. Vaša história systému git by mala vyzerať nasledovne.
Obrázok 2: História potvrdenia po pridaní potvrdenia G do hlavnej vetvy.
Všetko vyzerá dobre. Teraz, ak chcete všetky zmeny, ktoré ste v priečinku vykonali nejaký obor pobočka byť v pán pobočka, môžete zlúčiť nejaký obor pobočka do pán pobočka. Toto je čo git zlúčiť robiť.
Čo ak chcete potvrdenie G byť k dispozícii v nejaký obor pobočka? Na to môžete použiť git rebase.
Z histórie potvrdenia na obr. 2 môžete vidieť, že vetva nejaký obor začína od spáchania C. Ak urobíte git rebase ďalej nejaký obor, potom by to začalo od spáchania G ako je znázornené na obrázku 3 nižšie. Upozorňujeme, že obsah potvrdenia D a E sa zmení aj po operácii rebase. Záväzky D a E zahrnie zmeny do potvrdenia G. Preto som pridal * symbol pred záväzkami D a E.
Ak chcete vedieť, ako by vyzerala história potvrdenia, keby som ju spojil, pozrite sa na obr. Zahrnul som to len preto, aby ste to mohli porovnať s git rebase.
Obrázok 4: História potvrdenia, ak bolo použité git merge.
Teraz, keď viete, čo je git rebase, rozdiel medzi git rebase a git merge a prečo ho git rebase použil, ukážem vám, ako ho používať v nasledujúcej časti tohto článku nižšie.
Pracovný postup Git Rebase:
V tejto časti vytvorím na svojom lokálnom počítači nové úložisko git a ukážem vám, ako funguje git rebase. Odporúčam, aby ste dobre porozumeli git rebase pred jeho použitím vo vašom projekte.
Najskôr vytvorte nové úložisko Git rebase-demo / v počítači takto:
$ git init rebase-demo
Teraz prejdite na ikonu rebase-demo / adresár takto:
$ cd rebase-demo /
Teraz vytvorte nový súbor test.TXT nasledovne:
$ echo "A"> test.TXT
Test.Súbor txt obsahuje iba jeden riadok A. Povedzme, toto je váš pôvodný kód projektu.
Teraz vykonajte zmeny nasledovne:
$ git pridať .$ git commit -m 'A'
Teraz pridajte ďalší riadok B do test.TXT súbor, ako je znázornené na snímke obrazovky nižšie.
Teraz vykonajte zmeny nasledovne:
$ git pridať .$ git commit -m 'B'
Teraz pridajme ďalší riadok C k test.TXT spis.
Zmeny tiež vykonajte nasledovne:
$ git pridať .$ git commit -m 'C'
História potvrdenia hlavnej pobočky by teraz mala vyzerať takto:
$ git log - online
Povedzme, že máte nejaké nové nápady, ktoré chcete vyskúšať. Poďme teda vytvoriť a vyskúšať novú pobočku Nová funkcia nasledovne:
$ git checkout -b nová funkcia
Teraz pridajte svoj nový nápad (riadok D povedzme) do test.TXT spis.
Teraz vykonajte zmeny nasledovne:
$ git pridať .$ git commit -m 'D'
Teraz pridajte riadok E do test.TXT spis.
Vykonajte zmeny nasledovne:
$ git pridať .$ git commit -m 'E'
Teraz, história spáchania Nová funkcia pobočka by mala vyzerať takto:
$ git log - onlinePozrite sa, ako sú provízie v poradí A < B < C < D < E?
Teraz si pamätáte, že ste zabudli niečo pridať do súboru pán pobočka, v ktorej ste tiež chceli byť Nová funkcia pobočka! Takže, pokladňa do pán pobočka.
Na konci súboru som pridal nový riadok test.TXT súbor, ako vidíte.
Teraz vykonajte zmeny nasledovne:
$ git pridať .$ git commit -m 'G'
Teraz, história spáchania pán pobočka by mala vyzerať takto.
A < B < C < G
Teraz, aby sme zmenšili viazanosť záväzkov z pán pobočka do Nová funkcia pobočka, prvá platba do Nová funkcia pobočka.
$ git checkout nová funkcia
Teraz urobte git rebase z pán vetva takto:
$ git rebase master
Niektoré spájajú konflikty! Poďme to napraviť.
Zmeny, ktoré som vykonal v záväzku G a D si navzájom odporujú. Chcem si obe ponechať.
Po vyriešení konfliktu zlúčenia sa test.TXT súbor by mal vyzerať takto:
Teraz pridajte zmeny do pracovnej oblasti nasledovne:
$ git pridať .
Teraz pokračujte v rebase nasledujúcim spôsobom:
$ git rebase - pokračovať
Ďalší zlučovací konflikt! Môže sa to stať. Rebase zmení históriu potvrdenia git. Očakávajú sa teda také veci.
Zdá sa, že proces zlúčenia zlyhal kvôli niektorým prázdnym riadkom. Poďme to napraviť.
Po vyriešení konfliktu zlúčenia sa test.TXT súbor by mal vyzerať nasledovne.
Teraz pridajte zmeny do pracovnej oblasti nasledovne:
$ git pridať .
Teraz pokračujte v operácii rebase nasledovne:
$ git rebase - pokračovať
Git rebase je dokončený.
Ako vidíte, história potvrdenia vetvy nových funkcií sa aktualizuje. História potvrdenia je teraz nasledovná:
A < B < C < G < D < EPresne podľa očakávaní.
Finálny test.TXT súbor by mal vyzerať nasledovne.
Git rebase je mocný nástroj. Nikdy by ste ho však nemali používať na zdieľaných úložiskách Git. Používajte ho iba v úložiskách Git, ktoré používate iba vy. V opačnom prípade budete na ceste čeliť mnohým problémom.
Takto teda používate git rebase. Ďakujeme, že ste si prečítali tento článok.