Rozdiel medzi Git ReBase a Merge

V tomto článku budeme diskutovať o dvoch takýchto nástrojoch Rebase a Zlúčiť a ich rozdielnosti. GIT je jedným z najbežnejšie používaných distribútorov verzií DVCS medzi programátormi kvôli svojej dynamickej povahe a rozsiahlej dostupnosti nástrojov na prácu s verziami. Existujú dva spôsoby, ako môžeme odoslať naše zmeny z jednej vetvy do druhej. Jeden je pomocou Rebase a druhý je Merge, ktorý je dosť populárny. Nižšie sa dozvieme najlepšie porovnanie medzi Git ReBase vs Merge.

Porovnanie medzi hlavami medzi Git ReBase a Merge (infografika)

Nižšie je päť najlepších porovnaní medzi Git ReBase vs Zlúčiť:

Kľúčové rozdiely medzi Git ReBase a Merge

Poďme diskutovať o kľúčovom rozdiele medzi Git ReBase a Merge:

1. Git Rebase

Git Rebase začína svoju prácu spoločným záväzkom medzi oboma pobočkami. Master a feature, odtiaľ porovnáva a zachytáva snímku rozdielu, ktorý sa dosiahne v jednej z vetiev, a potom ju pridá ostatným. Pozrime sa na to pomocou nižšie uvedených snímok obrazovky.

Predstavme si, že máme hlavnú vetvu a najnovšie sa k nej zaviazali m2, ako je to znázornené na vyššie uvedenom obrázku. Z tohto potvrdenia vytvoríme vetvu funkcií a urobili sme niekoľko úprav a potvrdíme správou f1. Teraz zvážme niekoho, kto zlúčil svoju prácu s pánom a teraz je posledný záväzok majstra m3, nie m2, ako je uvedené nižšie.

A tiež pokračujeme v práci na vetve funkcie a pridáme jej posledný záväzok ako f2, ako je uvedené nižšie.

Ako je zrejmé z vyššie uvedeného screengrabu, zvládli sme posledný commit m3 a máme funkciu, ktorá nie je aktuálna s masterom, pretože bola vytvorená z m2 commit snapshot, ktorý má posledný commit ako f3. Teraz kombinovať tieto snahy s hlavným generovať je uvedený nižšie.

Teraz musíme integrovať vyššie uvedené zmeny, ktoré je možné vykonať dvoma spôsobmi, z ktorých jedna je zlúčená a druhá s rebázou. Tu sa pozrieme na to, ako sa integrovať s rebase.

$ git checkout feature
Switched to a new branch 'feature'
$ git rebase master

Z vyššie uvedeného príkazu rebase sa pokúsime hľadať spoločné odovzdanie príkazu master aj feature, v tomto prípade je to m2. A potom, keď musíme rebasovať master, bude hľadať doplnky, ktoré boli vykonané s masterom a urobiť snímku m3 a funkciu rebase od m2 do m3. Teraz máme funkciu s m3 (namiesto m2), f1, f2 sa zaväzuje. Teraz môžem použiť funkciu rebase na aktualizáciu hlavnej vetvy so zmenami funkcie. Jedna vec, ktorú si treba zapamätať, je akákoľvek zmena pána musí byť podrobená auditu. Tu len ukazujem napríklad účel.

$ git checkout master
Switched to a new branch 'master'
$ git rebase feature

Teraz v tomto použijeme najnovšiu vetvu funkcie potvrdenia, ktorá je f2 na master a posledným potvrdením o chybe master bude f2. Zoznam príkazov môžete zadať pomocou príkazu git log, ale najskôr sa musíme pozrieť, do ktorej vetvy je potrebné zobraziť protokol, ako je uvedené nižšie.

$ git checkout feature
Switched to a new branch 'feature'
$ git log

Teraz s rebase sme integrovali aktualizácie funkcie, ktorú zvládneme. Pokúsme sa to dosiahnuť zlúčením.

2. Git Merge

Vyššie uvedený screenshot použijeme aj ako referenciu a môžeme dosiahnuť to isté, čo sme dosiahli pomocou rebase a zlúčením.

Zlúčenie Git sa zaväzuje k poslednému potvrdeniu, ktoré sme mali v hlavnej vetve, a tu je prípad s potvrdením f2, ktoré zhromažďuje všetky zmeny a spája ich s posledným potvrdením, ktoré máme v hlavnej vetve, m3 tu. Vyzerá to komplikovane, ale dá sa ľahko vykonať príkazom zlúčiť. Môžeme buď vykonať priame zlúčenie alebo zlúčenie squash a rozdiel v oboch.

$ git checkout master
Switched to a new branch 'master'
$ git merge feature

Vyššie uvedený príkaz prevezme všetky potvrdenia o funkcii a pridá sa do denníka hlavnej jednotky. Aby sme sa vyhli tomu, že môžeme použiť squash, aby sme v protokole majstra urobili po m3 iba jedno potvrdenie a to je aktualizované

$ git checkout master
Switched to a new branch 'master'
$ git merge –squash feature

jeden by mal byť opatrný pri používaní git rebázy a pokúsiť sa tomu vyhnúť. Zlatým pravidlom je vyhnúť sa tomu prostredníctvom verejných pobočiek.


Stačí sa pozrieť na vyššie uvedený scenár. To sa môže stať, keď sa pokúsite zvariť majstra na vrchole svojej vetvy funkcií a naša hlavná vetva je verejná, teraz je hlavná vetva aktualizovaná, ale všetci ostatní pracujú na staršej verzii hlavnej. Keďže rebasing bude mať za následok úplne nové záväzky, môže si myslieť, že história hlavnej vetvy sa od všetkých ostatných líšila. Jediným spôsobom, ako to vyriešiť, bude synchronizácia oboch masterov ich zlúčením späť a mať výsledný súbor záväzkov, ktoré budú mätúce.

Porovnávacia tabuľka Git ReBase verzus Zlúčiť

V nasledujúcej tabuľke sú zhrnuté porovnania medzi Git ReBase a Merge:

Základ porovnania medzi Rebase a Merge rebase Zlúčiť
COMMITMení a prepisuje históriu vytvorením nového potvrdenia pre každé odovzdanie v zdrojovej vetve.Zahŕňa všetky zmeny v zdroji, ale udržuje pôvod každého histórie potvrdenia, zahŕňa všetky zmeny v zdroji, ale zachováva pôvod každého histórie potvrdenia.
výberTu najskôr skontrolujeme vetvu, ktorú treba rebasovať, a potom vyberte príkaz rebase
pridať aktualizácie.
Tu najskôr skontrolujte vetvu, ktorá musí byť zlúčená ako prvá. Potom vykonajte operáciu zlúčenia a posledný príkaz zdroja
sa zlúčia s posledným potvrdením kapitána.
Riešenie konfliktovKeďže história odovzdania bude prepísaná tak, aby bola pochopená konflikt bude v roku ťažké
niektoré prípady.
Zlúčiť konflikt možno ľahko zvládnuť pochopením chyby, ktorá bola vykonaná pri zlúčení.
Zlaté pravidloMalo by sa používať vo verejných pobočkách, pretože história záväzkov môže spôsobiť zmätok.Žiadne škody pri výkone verejných pobočiek.
dosiahnuteľnosťPotvrdenia, ktoré boli kedysi dosiahnuteľné, sa po rebase už nebudú dať dosiahnuť, pretože sa zmení história potvrdení.

Záväzky zostanú dosiahnuteľné
zo zdrojových vetiev.

záver

Zlúčiť a Rebase sú dva silné nástroje Gitu a obidva sa používajú na začlenenie zmien do vetiev, ale pri rebase musíme byť trochu opatrní, pretože prepíše históriu záväzkov a ich použitie na verejných pobočkách môže brániť práci. ostatných, ktorí ich spôsobujú zmätok. Zatiaľ čo možnosť zlúčenia môžete použiť, pretože jej záväzky sú dosiahnuteľné zo zdrojovej vetvy a ak máme správne porozumenie, môžete ľahko vyriešiť konflikty zlúčenia.

Odporúčané články

Toto je vodítko k najvyššiemu rozdielu medzi Git ReBase a Merge. Ďalej diskutujeme o rozdieloch Git ReBase a Zlúčiť kľúčové rozdiely s informačnou a porovnávacou tabuľkou. Ďalšie informácie nájdete aj v nasledujúcich článkoch -

  1. Git Fetch vs Git Pull - najväčšie rozdiely
  2. Abstrakcia vs zapuzdrenie Top 6 Porovnanie
  3. Architektúra HBase s výhodami
  4. Otázky týkajúce sa rozhovoru GIT Top 11
  5. Systém riadenia verzií GIT
  6. Git Push
  7. Zapuzdrenie do JavaScriptu
  8. Kompletný sprievodca vzdialeným príkazom Git
  9. Tri fázy životného cyklu Gitu s pracovným tokom
  10. Ako používať GIT Cherry-pick s príkladom?

Kategórie: