Erinevus Git ReBase vs Merge vahel

Selles artiklis käsitleme kahte sellist tööriista Rebase ja Merge ning nende erinevust. GIT on dünaamilise olemuse ja versioonide haldamiseks tohutu tööriista olemasolu tõttu üks programmeerijate seas kõige sagedamini kasutatavaid jaotatud versioonikontrollereid DVCS. On kaks viisi, kuidas saame oma muudatused ühest harust teise saata. Üks on Rebase'i kasutamine ja teine ​​on üsna populaarne ühendamine. Allpool õpime Git ReBase'i ja Merge'i võrdlust.

Git ReBase ja Merge võrdlus (infograafika)

Allpool on toodud 5 parimat võrdlust Git ReBase vs Merge vahel:

Peamised erinevused Git ReBase vs Merge vahel

Arutame peamist erinevust Git ReBase vs Merge vahel:

1. Git Rebase

Git Rebase alustab oma tööd kahe haru ühiselt võetud kohustusest. Peamine ja funktsioon, siin võrreldakse mõlemaid ja jäädvustatakse erinevus harust, mis ühes filiaalis tehakse, ja siis lisatakse see teistele. Vaatame seda allpool olevate ekraanipiltide abil.

Kujutame ette, et meil on peaharu ja pühendume sellele kõige hiljem, nagu on näidatud ülaltoodud ekraanipildil. Sellest kohustusest loome funktsiooniharu ja tegime mõned muudatused ning pühendusime f1-teatega. Mõelgem nüüd, et keegi on ühendanud oma töö kapteniks ja nüüd on kapteni viimane pühendumus m3, mitte m2, nagu allpool näidatud.

Ja jätkame ka funktsiooni haru kallal, et lisada uusim kohustus olla f2, nagu allpool näidatud.

Nagu ülaltoodud ekraanipildi pealt näha, oleme õppinud viimase pühendatud m3-i ja meil on funktsioon, mis pole kapteniga kursis, kuna see loodi ruumist m2 commitsi hetktõmmis, mille viimane manustamisviis on f3. Allpool on näidatud nende jõupingutuste ühendamine kapteni abil.

Nüüd peame integreerima ülaltoodud muudatused, mida saab teha kahel viisil: üks ühendamise ja teine ​​taaspakkumisega. Siin vaatleme, kuidas integreeruda rebase'iga.

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

Ülaltoodud rebase-käsu alt proovime otsida ühist pühendumist nii meistrilt kui ka funktsioonilt ja antud juhul on see m2. Ja siis, kui peame ülembaasi muutma, otsib ta täiendusi, mis tehti ülemusega, ning võtab hetkepildi m3 ja taaspakkumise funktsiooni ruutmeetrilt m3. Nüüd on meil funktsioon m3-ga (m2 asemel), f1, f2 kohustub. Nüüd saan taotleda selle funktsiooni taasbaasimist, et muuta põhiosa funktsiooni muudatustega. Üks asi, mida tuleb meeles pidada, tuleb kaptenimuudatusi auditeerida. Siin ma näitan ainult näiteks eesmärki.

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

Nüüd rakendame selles kaptenis uusimat sidumisfunktsiooni haru, mis on f2, ja kapteni uusim püsiülevaate pilt on f2. Saate kohustusi loetleda käsu git log abil, kuid kõigepealt peame kontrollima, millisesse harusse peame logi nägema, nagu allpool.

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

Nüüd koos rebase'iga oleme integreerinud funktsiooni värskendused kapteniks. Proovime seda saavutada liitmise teel.

2. Git Merge

Me kasutame siin viitamiseks ka ülaltoodud ekraanipilti ja sama tulemuse saame ka ümbersuunamise ja ühendamise abil.

Git merge paneb toime viimase kohustuse, mis meil funktsiooniharus oli, ja antud juhul on tegemist f2 įsipareigusega, mis koondab kõik muudatused ja liidab selle kõige uuema kohustusega, mis meil on peaharus, m3 siin. See näeb välja keeruline, kuid ühendamiskäsklusega saab seda hõlpsalt täita. Saame teha kas otsese liitmise või squash-ühendamise ja erinevus mõlemas.

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

Ülaltoodud käsk võtab kõik funktsioonid funktsioonid ja lisab ka kapteni logi. Selle vältimiseks võime kasutada squashi, nii et kapteni logis anname pärast m3 ainult ühte kohustust ja see on värskendatud

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

git rebase'i kasutamisel peaks olema ettevaatlik ja püüdma seda vältida. Kuldreegel on seda vältida avalike harude kaudu.


Vaadake lihtsalt ülaltoodud stsenaariumi. See võib juhtuda siis, kui proovite oma põhitegevuse haru peal meistrit taasalustada ja meie põhiline haru on avalik, nüüd on põhiosa värskendatud, kuid kõik teised töötavad vanema kapteniversiooni kallal. Kuna rebasseerimine toob kaasa täiesti uusi ülesandeid, võib git mõelda, et peaharu ajalugu on kõigist teistest eristunud. Ainus viis selle lahendamiseks on sünkroonida mõlemad kaptenid, liites nad uuesti kokku ja tekitades tulemuseks kohustuste komplekti, mis on segane.

Git ReBase'i ja ühendamise võrdlustabel

Allolevas tabelis võetakse kokku Git ReBase ja Merge võrdlused:

Rebase vs Merge võrdlusalused Rebase Ühenda
KohustubSee muudab ja kirjutab ümber ajaloo, luues igale allikaharule uue kohustuse.See sisaldab kõiki muudatusi allikas, kuid säilitab iga pärimisajaloo esivanemuse, sisaldab kõiki muudatusi allikas, kuid säilitab iga seostamisajaloo esivanemad.
ValikSiin kontrollime kõigepealt haru, mis tuleb taasalustada, seejärel valime käsu rebase
värskenduste lisamiseks teistele.
Siit vaadake esmalt läbi haru, mis tuleb kõigepealt ühendada. Seejärel viige läbi allika ühendamise toiming ja viige uusim kohustus
liidetakse kapteni viimase kohustusega.
Konfliktide lahendamineKuna kohustuste ajalugu kirjutatakse ümber, et aru saada, on konflikt keeruline
mõned juhtumid.
Liitmiskonflikti saab hõlpsasti lahendada, kui mõistate viga, mis ühendamisel tehti.
kuldne reegelPeaks seda kasutama avalikes harudes, kuna ajaloo sidumine võib tekitada segadust.Avalike harude tegemisel pole palju kahju.
LigipääsetavusKuna need kohustused, mis olid kunagi saavutatavad, ei ole pärast tagasivõtmist enam juurdepääsetavad, kuna kohustuste ajalugu on muudetud.

Kohustused jäävad saavutatavaks
lähteharudest.

Järeldus

Ühendamine ja Rebase on kaks kahte võimast Giti tööriista ja neid mõlemaid kasutatakse harudes tehtud muudatuste kaasamiseks, kuid me peame olema natuke ettevaatlikud rebase'iga, kuna see kirjutab ümber kohustuste ajaloo ja nende kasutamine avalikes harudes võib tööd takistada teiste segadust tekitav. Kuna saate kasutada liitmisvalikut, kuna selle ülesanded on juurdepääsetavad lähteallkonnast ja need suudavad ühendamiskonfliktid hõlpsalt lahendada, kui meil on nende mõistmine.

Soovitatavad artiklid

See on juhend Git ReBase vs Merge peamise erinevuse kohta. Siin käsitleme ka Git ReBase vs Merge peamisi erinevusi infograafika ja võrdlustabeliga. Võite lisateabe saamiseks vaadata ka järgmisi artikleid -

  1. Git Fetch vs Git Pull - peamised erinevused
  2. Abstraktsioon vs kapseldamine | Kuue parima võrdlus
  3. HBase'i eelistega arhitektuur
  4. GIT-i intervjuu küsimused | 11 parimat
  5. GIT versioonikontrollisüsteem
  6. Git Push
  7. Kapseldamine JavaScripti
  8. Git-kaugkäskude täielik juhend
  9. Giti elutsükli kolm etappi koos töövooga
  10. Kuidas kasutada GIT Cherry-pick koos näitega?

Kategooria: