Ero Git ReBase: n ja yhdistämisen välillä

Tässä artikkelissa käsittelemme kahta tällaista työkalua Rebase ja Merge ja niiden eroja. GIT on yksi ohjelmoijien keskuudessa yleisimmin käytetyistä hajautetuista versio-ohjaimista DVCS, koska sen dynaaminen luonne ja laaja työkaluvalmius käsitellä versioita. On olemassa kaksi tapaa, joilla voimme lähettää muutoksemme haarasta toiseen. Yksi on Rebase-käyttö ja toinen on melko suosittu yhdistäminen. Alla opimme parhaan vertailun Git ReBase ja Merge välillä.

Head to Head -vertailu Git ReBase vs Merge (Infographics)

Alla on 5 suosituinta vertailua Git ReBase: n ja Merge: n välillä:

Keskeiset erot Git ReBase vs Merge -sovelluksen välillä

Keskustelemme tärkeimmistä eroista Git ReBase vs Merge: n välillä:

1. Git Rebase

Git Rebase aloittaa työnsä yhteisestä sitoutumisesta näiden kahden haaran välillä. Päällikkö ja ominaisuus, täältä se vertaa molempia ja sieppaa tilannekuvan erotuksesta, joka tehdään yhdessä haaroista, ja lisää sen sitten muille. Katsokaamme tätä alla olevien kuvakaappausten avulla.

Kuvitelkaamme, että meillä on päähaaro ja sitoutumme siihen viimeistään m2, kuten yllä olevassa kuvakaappauksessa esitetään. Tästä sitoutumisesta luomme ominaisuushaaran ja teimme joitain muutoksia ja sitoutimme f1-sanomalla. Katsotaan nyt, että joku on yhdistänyt työnsä mestariksi ja nyt mestarin viimeisin sitoutuminen on m3, ei m2, kuten alla on esitetty.

Jatkamme myös toimintoa ominaisuushaarassa lisätäksemme sen viimeisimmän sitoumuksensa olla f2 alla olevan kuvan mukaisesti.

Kuten yllä olevasta näytönohjaimesta nähdään, olemme hallinneet viimeisimmän sitominen m3: n ja meillä on ominaisuus, joka ei ole ajan tasalla päällikön kanssa, koska se luotiin m2: n tilannekuvasta, joka on viimeisin toimeksianto f3: na. Nyt yhdistää nämä ponnistelut päällikön luomaan on esitetty alla.

Nyt meidän on integroitava yllä olevat muutokset, jotka voidaan tehdä kahdella tavalla: yhdistämällä ja toisella yhdistämällä. Tässä tarkastellaan kuinka integroida rebase-järjestelmään.

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

Yllä olevasta rebase-komennosta yritämme etsiä yhteistä sitoutumista sekä isäntältä että ominaisuudelta ja tässä tapauksessa se on m2. Ja sitten kun meidän on tehtävä uudelleen base-masteriksi, se etsii lisäyksiä, jotka tehtiin masterilla, ja ottaa tilannekuvan m3 ja uudelleenasetuksen ominaisuuden m2: stä m3: iin. Joten meillä on nyt ominaisuus, jossa m3 (m2: n sijasta), f1, f2 sitoutuu. Nyt voin hakea ominaisuuden uudistamista, jotta päähakemisto päivitetään ominaisuuden muutoksilla. Yksi muistettava asia on, että kaikki muutokset päälliköihin on tarkastettava. Tässä esitän vain esimerkiksi tarkoitusta.

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

Nyt tässä me käytämme viimeisintä sitoutumisominaisuutta, joka on f2, isäntään ja isäntään viimeisin sitoutuva tilannekuva on f2. Voit luetteloida sitoumukset käyttämällä git log -komentoa, mutta meidän on ensin tarkistettava, mihin haaraan meidän täytyy nähdä loki kuten alla.

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

Nyt rebase-toiminnolla olemme integroineet ominaisuuden päivitykset hallittavaksi. Yritetään saavuttaa tämä sulauttamalla.

2. Yhdistä

Käytämme yllä olevaa kuvakaappausta myös tässä referenssissä, ja voimme saavuttaa saman, minkä saavutimme myös uudelleentasoimalla ja yhdistämällä.

Git-yhdistäminen sitoutuu viimeiseen sitoumukseen, joka meillä oli ominaisuushaarassa. Tässä tapauksessa kyse on f2-sitomuksesta, joka kokoaa kaikki muutokset ja yhdistää sen viimeisimpään sitoumukseen, joka meillä on päähaarassa, m3 täällä. Tämä näyttää monimutkaiselta, mutta se voidaan helposti suorittaa yhdistämiskomennolla. Voimme joko suorittaa suoran yhdistämisen tai puristaa yhdistämisen ja eron molemmissa.

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

Yllä oleva komento vie kaikki ominaisuuden sitoutumiset ja lisää myös isäntälokiin. Vältämme sen, että voimme käyttää squashia siten, että päällikön lokiin kirjaamme m3: n jälkeen vain yhden sitoutumisen ja se on päivitetty

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

pitäisi olla varovainen käyttäessäsi git rebasea ja yrittää välttää sitä. Kultainen sääntö on välttää sitä julkisten sivukonttoreiden avulla.


Katsokaa vain yllä olevaa skenaariota. Näin voi tapahtua, kun yrität uudelleen perustaa master-ominaisuuden ominaisuushaaran päälle ja master-haara on julkinen, nyt master-haara päivitetään, mutta kaikki muut työskentelevät master-version vanhemman version parissa. Koska rebasointi johtaa aivan uusiin sitoumuksiin, git voi ajatella, että päähaaran historia on eronnut kaikista muista. Ainoa tapa ratkaista tämä on synkronoida molemmat isäntä yhdistämällä ne takaisin toisiinsa ja saada aikaan tuloksena sitova joukko sitoumuksia, jotka ovat hämmentäviä.

Vertailutaulukko Git ReBase vs Merge -sovelluksesta

Seuraavassa taulukossa on yhteenveto Git ReBase: n ja Merge: n vertailuista:

Vertailun perusteet Rebase: n ja yhdistämisen välillä Rebase Yhdistää
sitoutuuSe muuttaa ja kirjoittaa historiaa luomalla uuden sitoumuksen jokaiselle sitoumukselle lähdehaarassa.Se sisältää kaikki muutokset lähteeseen, mutta ylläpitää kunkin sitouttamishistorian esi-isiä, sisältää kaikki muutokset lähteeseen, mutta ylläpitää kunkin sitouttamishistorian esi-ikää.
ValintaTäällä tarkistetaan ensin haara, joka on palautettava uudelleen, ja valitse sitten rebase-komento
lisätäksesi päivityksiä muille.
Täältä tarkista ensin haara, joka on ensin sulautettava. Suorita sitten lähteen yhdistämistoiminto ja viimeisin sitoutuminen
yhdistetään päällikön viimeisimpään sitoutumiseen.
Konfliktin käsittelyKoska sitoutumishistoria kirjoitetaan uudelleen ymmärtää konflikti on vaikea vuonna
jotkin tapaukset.
Yhdistämisristiriidat voidaan hoitaa helposti ymmärtäessäsi virhettä, joka tehtiin sulautuessa.
kultainen sääntöPitäisi käyttää julkisissa sivukonttoreissa, koska sitoutumishistoria voi aiheuttaa sekaannusta.Ei paljon haittaa suorittaessaan julkisia sivuliikkeitä.
tavoitettavuusSitoumukset, jotka olivat kerran tavoitettavissa, eivät ole enää saavutettavissa palautumisen jälkeen, koska sitoumushistoria on muuttunut.

Sitoumukset pysyvät tavoitettavissa
lähteen oksista.

johtopäätös

Yhdistäminen ja Rebase ovat pari kahta Gitin tehokasta työkalua, ja molempia käytetään sisällyttämään oksien muutokset, mutta meidän on oltava hieman varovaisia ​​rebase-toiminnon kanssa, koska se kirjoittaa sitoumusten historian ja niiden käyttäminen julkisissa sivukonttoreissa voi haitata työtä toisten aiheuttaen hämmennystä. Voit käyttää yhdistämisvaihtoehtoa, koska sen toimeksiannot ovat tavoitettavissa lähdehaarasta ja voivat helposti ratkaista yhdistämisristiriidat, jos meillä on asianmukainen ymmärrys.

Suositellut artikkelit

Tämä on opas Git ReBase: n ja Merge: n väliseen eroon. Tässä keskustellaan myös Git ReBase vs Merge -erot infografisten ja vertailutaulukoiden kanssa. Saatat myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. Git Fetch vs Git Pull - tärkeimmät erot
  2. Abstraktio vs. kapselointi | 6 suosituinta vertailua
  3. HBase-arkkitehtuuri ja edut
  4. GIT-haastattelukysymykset | Top 11
  5. GIT-versionhallintajärjestelmä
  6. Git Push
  7. Kapselointi JavaScriptiin
  8. Täydellinen opas Git-kauko-ohjauksesta
  9. Git-elinkaaren kolme vaihetta työnkulun kanssa
  10. Kuinka käyttää GIT Cherry-pick-esimerkkiä?