Razlika med Git ReBase in Merge

V tem članku bomo razpravljali o dveh takih orodjih Rebase in Merge in njihovi razliki. GIT je eden izmed najpogosteje uporabljanih krmilnikov DVCS za distribucijo različic zaradi svoje dinamične narave in velike razpoložljivosti orodij za obdelavo različic. Obstajata dva načina, s katerimi lahko svoje spremembe pošljemo iz ene podružnice v drugo. Ena je z uporabo Rebase, druga pa je Merge, ki je precej priljubljena. Spodaj bomo izvedeli zgornjo Primerjavo med Git ReBase in Merge.

Primerjava med uporabniki med Git ReBase in Merge (Infographics)

Spodaj je zgornjih 5 primerjav med Git ReBase in Merge:

Ključne razlike med Git ReBase in Merge

Pogovorimo se o ključni razliki med Git ReBase vs Merge:

1. Git Rebase

Git Rebase začne svoje delo iz skupne zaveze obeh podružnic. Glavni in funkcijski element, od tod primerja oboje in posname posnetek razlike, ki je narejen v eni od vej, in ga nato doda drugim. Oglejmo si to s spodnjimi posnetki zaslona.

Predstavljajmo si, da imamo glavno vejo in najnovejšo zavezo vrnemo v m2, kot je prikazano na zgornjem posnetku zaslona. Iz te zaveze ustvarimo vejo funkcij in naredili smo nekaj sprememb in zavezali s f1 sporočilom. Zdaj pa razmislimo o tem, da je nekdo svoje delo združil v mojstra in zdaj je najnovejši zagon mojstra m3, ne m2, kot je prikazano spodaj.

Prav tako nadaljujemo z delom na veji funkcij, da dodamo zadnjo zavezo, da bo f2, kot je prikazano spodaj.

Kot je razvidno iz zgornje zaslonske slike, smo obvladali najnovejši zagon m3 in imamo funkcijo, ki ni najbolj posodobljena z glavnim, saj je bila ustvarjena iz m2 posnetka posnetka, ki ima najnovejšo zavezo kot f3. Zdaj, da združite ta prizadevanja z glavnim za ustvarjanje, je prikazano spodaj.

Zdaj moramo vključiti zgornje spremembe, ki jih lahko izvedemo na dva načina: ena z združitvijo in druga z rebazo. Tukaj bomo pogledali, kako se integrirati z rebazo.

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

Iz zgornjega ukaza rebase bomo poskušali poiskati skupno zavezo pri master-u in lastnosti, v tem primeru je m2. In potem, ko moramo obnoviti master, bomo poiskali dodatke, ki so bili opravljeni z master-om, in posnamejo posnetek m3 in funkcijo ponovne zasnove od m2 do m3. Zdaj imamo funkcijo z m3 (namesto m2), f1, f2. Zdaj se lahko prijavim za ponovno prikazovanje funkcije, da posodobim glavno vejo s spremembami funkcije. Ne pozabite, da je treba vsako revizijo spremeniti. Tukaj samo prikazujem na primer namen.

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

Zdaj bomo v tem primeru uporabili najnovejšo vejo funkcij zarezov, ki jo bo obvladal f2, in najnovejši posnetek glavnega zavoda bo f2. Zaveze lahko navedete z ukazom git log, vendar moramo najprej preveriti, v katero vejo moramo videti dnevnik spodaj.

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

Zdaj smo z rebazo integrirali posodobitve funkcije, ki jih je treba obvladati. Poskusimo to doseči z združitvijo.

2. Git Merge

Zgornji posnetek zaslona bomo uporabili tudi za referenco in lahko dosežemo enako, kot smo ga dosegli tudi z rebaziranjem in spajanjem.

Git merge stori zadnjo zavezo, ki smo jo imeli v podružnici funkcij, in tukaj gre za f2 commit, ki zbere vse spremembe in jih združi z zadnjo zavezo, ki jo imamo v glavni veji, m3 tukaj. To je videti zapleteno, vendar ga je mogoče enostavno opraviti z ukazom spajanja. Lahko naredimo neposredno spajanje ali skvoš spajanje in razlika v obeh.

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

Zgornji ukaz bo sprejel vse lastnosti funkcije in dodal tudi v dnevnik glavnega strežnika. Da se izognemo, lahko uporabimo squash, tako da bomo v dnevniku poveljnika po m3 samo eno zavezali in to je posodobitev

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

bodite previdni, medtem ko uporabljate git rebase in se mu poskušajte izogniti. Zlato pravilo se je izogibati uporabi javnih podružnic.


Samo poglejte zgornji scenarij. To se lahko zgodi, ko poskusite ponovno postaviti master nad svojo vejo funkcij, naša glavna veja pa je javna, zdaj je glavna veja posodobljena, vsi ostali pa delajo na starejši različici glavnega računalnika. Ker bo ponovno izdajanje prineslo popolnoma nove zaveze, lahko git pomisli, da se je zgodovina glavne veje razlikovala od vseh drugih. Edini način, da to rešimo, bo sinhroniziranje obeh glavnega, tako da ju združimo nazaj in dobimo nabor zavez, ki bodo zmedeni.

Primerjalna tabela Git ReBase proti združitvi

Spodnja tabela povzema primerjave med Git ReBase in Merge:

Osnove primerjave med Rebase in Merge Rebase Spoji se
ObveščaSpremeni in prepiše zgodovino tako, da ustvari novo zavezo za vsak zagon v izvorni veji.Vključuje vse spremembe vira, vendar vzdržuje predreje vsake zgodovine zavozov, vključuje vse spremembe vira, vendar vzdržuje predreje vsake zgodovine zavozov.
IzborTu najprej preverimo vejo, ki jo je treba ponovno sestaviti, nato pa izberite ukaz rebase
da ga posodobitve dodate drugim.
Tu najprej preverite vejo, ki jo je treba najprej združiti. Nato izvedite operacijo spajanja in najnovejši zagon vira
se bo združila z zadnjo zavezo poveljnika.
Ravnanje s konfliktiKer bo zgodovina zavezov na novo napisana, bo razumevanje konflikta težko
nekateri primeri.
Spopad med spajanjem je mogoče zlahka rešiti, če razumete napako, ki je bila storjena med združitvijo.
Zlato praviloČe je treba uporabljati na javnih podružnicah, ker lahko zgodovina počutja povzroči zmedo.Med izvajanjem javnih podružnic ni veliko škode.
DosegljivostOdbori, ki so bili nekoč dosegljivi, po ponovni vzpostavitvi podatkov ne bodo več dosegljivi, ker se spremeni zgodovina potrditev.

Odbori bodo ostali dosegljivi
iz izvornih vej.

Zaključek

Merge and Rebase sta nekaj dveh močnih orodij Gita in obe uporabljata za vključitev sprememb vej, vendar moramo biti pri prenovih nekoliko previdni, saj bo ta na novo napisala zgodovino dokumentov in njihova uporaba na javnih podružnicah lahko ovira delo drugih povzroča zmedo. Medtem ko lahko uporabite možnost spajanja, saj so njeni zapisi dosegljivi iz izvorne veje in zlahka razrešite spore združitve, če se pravilno razumemo.

Priporočeni članki

To je vodnik za največjo razliko med Git ReBase in Merge. Tukaj razpravljamo tudi o glavnih razlikah Git ReBase vs Merge z infografiko in primerjalno tabelo. Za več informacij si lahko ogledate tudi naslednje članke -

  1. Git Fetch proti Git Pull - najboljše razlike
  2. Abstrakcija vs kapsulacija | Top 6 Primerjava
  3. HBase arhitektura s prednostmi
  4. Vprašanja za razgovor GIT | 11 najboljših
  5. GIT nadzorni sistem različic
  6. Git Push
  7. Kapsulacija v JavaScript
  8. Celoten vodnik za Git oddaljeni ukaz
  9. Tri stopnje življenjskega cikla Git s potekom dela
  10. Kako uporabiti GIT Cherry-pick s primerom?