Razlika između Git ReBase i Merge

U ovom ćemo članku raspravljati o dva takva alata Rebase i Merge i njihovoj razlici. GIT je jedan od najčešće korištenih kontrolera DVCS distribuirane verzije među programerima zbog svoje dinamične prirode i ogromne dostupnosti alata za rukovanje verzijama. Postoje dva načina na koje možemo poslati svoje promjene iz jedne grane u drugu. Jedan je pomoću Rebase-a, a drugi je Merge koji je prilično popularan. Ispod saznajemo vrh Usporedba Git ReBase-a i Mergea.

Usporedba između Git ReBase i Merge (Infographics)

Ispod je 5 najboljih usporedbi Git ReBase-a i Mergea:

Ključne razlike između Git ReBase i Merge

Razgovarajmo o ključnoj razlici između Git ReBase-a i Mergea:

1. Git Rebase

Git Rebase započinje svoj rad iz zajedničke obveze dviju grana. Glavni i značajka, odavde uspoređuje obje slike i bilježi sliku razlike koja se obavlja u jednoj od grana, a zatim je dodaje drugima. Pogledajmo to pomoću snimaka zaslona u nastavku.

Zamislimo da imamo glavnu granu i najnoviju obavezu za m2, kao što je prikazano na gornjoj slici. Iz ove obveze stvaramo granu značajki i napravili smo neke izmjene i obvezali s f1 porukom. Sad razmotrimo da je netko spojio svoj rad s master-om i sada je najnovija predava majstora m3, a ne m2 kao što je prikazano u nastavku.

Također nastavljamo raditi na grani značajki kako bismo dodali njezinu najnoviju obavezu da bude f2 kao što je prikazano u nastavku.

Kao što se vidi iz gornjeg zaslona, ​​ovladali smo najnovijim počinjanjem m3 i imamo značajku koja nije u skladu s master-om jer je stvorena iz m2 snimke m2 počinjenja koji ima najnoviju naredbu kao f3. Sada, za kombiniranje ovih napora s master-om za generiranje prikazano je dolje.

Sada moramo integrirati gornje promjene koje se mogu obaviti na dva načina, jedno s spajanjem, a drugo s rebazom. Ovdje ćemo pogledati kako se integrira s rebazom.

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

Iz gornje naredbe rebase pokušat ćemo potražiti zajedničku predaju i od glavnog i od značajki i u ovom slučaju to je m2. A tada, budući da moramo ponovo postaviti master, tražit će dopune koje su učinjene s master-om i uzeti snimku m3 i značajku ponovnog postavljanja od m2 do m3. Dakle, sada imamo svojstvo sa m3 (umjesto m2), f1, f2. Sada se mogu prijaviti za ponovno postavljanje značajke kako bih matičnu granu ažurirao s promjenama značajke. Jedna stvar koju treba zapamtiti je da svaka promjena master-a mora biti revidirana. Evo samo pokazujem na primjer svrhu.

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

Sada ćemo u ovom slučaju primijeniti najnoviju granu svojstva počinjenja koja je f2 za nadziranje, a najnovija snimka master-a će biti f2. Možete popisati obveze pomoću git log naredbe, ali prvo moramo provjeriti na koju granu moramo vidjeti zapisnik kao što je niže.

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

Sada smo s rebaseom integrirali ažuriranja značajki koje treba savladati. Pokušajmo to postići spajanjem.

2. Git Merge

Ovdje ćemo upotrijebiti gornju sliku zaslona i za referencu, a isto možemo postići i ponovnim spajanjem i spajanjem.

Git merge čini posljednje počinjenje koje smo imali u grani značajki i ovdje je slučaj s f2 počinjem, koji sakuplja sve promjene i spaja ih s najnovijim zauzimanjem koje imamo u glavnoj grani, m3 ovdje. To izgleda komplicirano, ali lako se može izvesti naredbom spajanja. Možemo napraviti izravno spajanje ili spajanje u skvoš i razlika je u obojici.

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

Gornja naredba preuzet će sve obveze značajke i dodati u zapisnik glavnog računala. Kako bismo izbjegli da možemo koristiti squash, tako da ćemo u dnevniku glavnog računala nakon m3 izvršiti samo jednu obvezu i to je ažuriranje

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

treba biti oprezan dok koristite git rebase i pokušati ga izbjeći. Zlatno je pravilo izbjegavati ga koristiti javne podružnice.


Pogledajte samo gornji scenarij. To se može dogoditi kada pokušate ponovo postaviti master na vrh svoje grane značajki, a naša glavna grana je javna, sada je glavna grana ažurirana, ali svi drugi rade na starijoj verziji glavnog računala. Budući da će izdavanje rezultirati potpuno novim počinjenjima, git može pomisliti da se povijest matične branše odvojila od svih ostalih. Jedini način da se to riješi bit će sinkronizacija oba master-a spajanjem zajedno i dobivanjem skupa obveza koji će biti zbunjujući.

Tabela za usporedbu Git ReBase-a protiv spajanja

Donja tablica sažima usporedbe između Git ReBase-a i Mergea:

Osnove usporedbe između Rebase i Merge Rebase Sjediniti
obvezujeOna mijenja i preispituje povijest stvarajući novu odredbu za svako počinjenje u grani izvora.Uključuje sve promjene u izvoru, ali održava porijeklo svake povijesti počinjenja, uključuje sve promjene u izvoru, ali održava podrijetlo svake povijesti počinjenja.
IzborOvdje prvo provjerimo granu koju je potrebno ponovno podesiti, a zatim odaberite naredbu rebase
da biste ga ažurirali drugima.
Ovdje najprije provjerite granu koju prvo treba spojiti. Zatim izvedite operaciju spajanja i najnoviju zapovijest izvora
bit će spojena s najnovijim zauzimanjem gospodara.
Rješavanje konflikataBudući da će povijest prepisivanja biti prepisivana, shvatiti će da je sukob teško
neki slučajevi.
Sukob spajanja može se lako riješiti razumijevanjem pogreške koja je učinjena tijekom spajanja.
zlatno praviloAko se koristi na javnim podružnicama jer povijest počinjenja može uzrokovati zbrku.Nema velike štete tijekom obavljanja javnih podružnica.
ReachabilityPojedinosti koji su bili jednom dosegnuti više neće biti dostupni nakon ponovnog zasnivanja jer se mijenja povijest počinjenja.

Isprave će ostati dostupne
iz izvornih grana.

Zaključak

Merge and Rebase su dva snažna alata Gita i oba se koriste za ugradnju promjena u granama, ali moramo biti oprezni s rebazom jer će to prepisati povijest obveza i njihovo korištenje na javnim granama može ometati rad drugih uzrokuje zbunjenost. Dok možete koristiti opciju spajanja jer su njezini dijelovi dostupni od izvorne grane i lako možemo razriješiti sukobe spajanja ako imamo odgovarajuće razumijevanje.

Preporučeni članci

Ovo je vodič za glavnu razliku između Git ReBase i Merge. Ovdje također raspravljamo o Git ReBase vs Merge ključnim razlikama s infografikom i tablicom usporedbe. Možete također pogledati sljedeće članke da biste saznali više -

  1. Git Fetch vs Git Pull - najbolje razlike
  2. Apstrakcija vs enkapsulacija | Top 6 usporedba
  3. HBase arhitektura s prednostima
  4. GIT intervju pitanja | Top 11
  5. GIT sustav kontrole verzija
  6. Git Push
  7. Inkapsulacija u JavaScriptu
  8. Kompletni vodič za daljinsku naredbu Gita
  9. Tri faze životnog ciklusa Git s tijekom rada
  10. Kako koristiti GIT Cherry-pick sa primjerom?

Kategorija: