Rozdíl mezi Git ReBase vs Sloučit

V tomto článku budeme diskutovat dva takové nástroje Rebase a Sloučit a jejich rozdíl. GIT je jedním z nejčastěji používaných řadičů distribuovaných verzí DVCS mezi programátory kvůli své dynamické povaze a obrovské dostupnosti nástrojů pro zpracování verzí. Existují dva způsoby, jak můžeme poslat naše změny z jedné větve do druhé. Jeden je pomocí Rebase a druhý je Sloučit, což je docela populární. Níže se dozvíme nejlepší srovnání mezi Git ReBase a Merge.

Srovnání hlava-hlava mezi Git ReBase vs Merge (Infographics)

Níže je pět nejlepších srovnání mezi Git ReBase vs Sloučit:

Klíčové rozdíly mezi Git ReBase a Merge

Pojďme diskutovat o klíčovém rozdílu mezi Git ReBase a Sloučit:

1. Git Rebase

Git Rebase začíná svou práci společným závazkem mezi oběma větvemi. Mistr a funkce, odtud porovnává oba a zachycuje snímek rozdílu, který se provádí v jedné z větví, a poté jej přidává ostatním. Podívejme se na to pomocí níže uvedených snímků obrazovky.

Představme si, že máme hlavní pobočku a poslední závazek k ní, jak je vidět na obrázku výše. Z tohoto odevzdání vytvoříme větev funkcí a provedli jsme nějaké úpravy a odevzdáme zprávu f1. Nyní pojďme zvážit, že někdo sloučil svou práci s mistrem a nyní poslední odevzdání mistra je m3, ne m2, jak je ukázáno níže.

A také pokračujeme v práci na větvi funkcí a přidáme její poslední potvrzení jako f2, jak je ukázáno níže.

Jak je vidět z výše uvedené obrazovky, zvládli jsme poslední revizi m3 a máme funkci, která není aktuální s hlavní jednotkou, protože byla vytvořena z m2 potvrzení snímku, který má poslední revizi jako f3. Nyní kombinovat toto úsilí s generátorem je ukázáno níže.

Nyní musíme integrovat výše uvedené změny, které lze provést dvěma způsoby, jeden s sloučením a druhý s rebasou. Zde se podíváme na to, jak se integrovat s rebase.

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

Z výše uvedeného příkazu rebase se pokusíme hledat společný odevzdání od master i feature, v tomto případě je to m2. A poté, co musíme rebasovat master, bude hledat doplňky, které byly provedeny s masterem a pořídit snímek m3 a funkci rebase od m2 do m3. Teď máme funkci s m3 (místo m2), f1, f2 se zavazuje. Nyní mohu použít rebase na funkci, aby se hlavní větev aktualizovala se změnami funkce. Jedna věc k zapamatování je každá změna pána musí být prověřena. Tady jen ukazuji například účel.

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

Nyní v tomto použijeme nejnovější větev funkce potvrzení, která je f2 na master a poslední snímek potvrzení na master bude f2. Commit můžete vypsat pomocí příkazu git log, ale nejdřív si musíme zkontrolovat, do které větve potřebujeme vidět protokol, jak je uvedeno níže.

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

Nyní s rebase jsme integrovali aktualizace funkce, kterou máme ovládat. Pokusme se toho dosáhnout sloučením.

2. Git Merge

Použijeme výše uvedený snímek obrazovky pro odkaz také zde a můžeme dosáhnout stejného toho, čeho jsme dosáhli pomocí rebase a sloučení.

Sloučení Git se zavazuje k poslednímu odevzdání, které jsme měli ve větvi funkcí, a v tomto případě se jedná o potvrzení f2, které shromažďuje všechny změny a sloučí je s posledním potvrzením, které máme v hlavní větvi, m3 zde. Vypadá to komplikovaně, ale lze jej snadno provést příkazem sloučení. Můžeme buď provést přímé sloučení nebo sloučení squash a rozdíl v obou.

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

Výše uvedený příkaz převezme všechny potvrzené funkce a přidá také do protokolu hlavního serveru. Abychom se tomu vyhnuli, můžeme použít squash, takže v logu masteru budeme po m3 pouze jeden odevzdání a to je aktualizováno

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

jeden by měl být opatrný při použití git rebase a pokusit se tomu vyhnout. Zlatým pravidlem je vyhnout se používání veřejných poboček.


Stačí se podívat na výše uvedený scénář. To se může stát, když se u zkuste rebasovat master na vrcholu vaší větev funkce a naše hlavní větev je veřejná, nyní je hlavní větev aktualizována, ale všichni ostatní pracují na starší verzi master. Vzhledem k tomu, rebasing bude mít za následek zcela nové odevzdání git může myslet, že historie hlavní větve se lišil od všech ostatních. Jediným způsobem, jak to vyřešit, bude synchronizace obou master jejich sloučením zpět dohromady a mít výslednou sadu potvrzení, která bude matoucí.

Srovnávací tabulka Git ReBase vs Sloučit

Následující tabulka shrnuje srovnání mezi Git ReBase vs Sloučit:

Základ srovnání mezi Rebase a Merge Rebase Spojit
ZávazkyMění a přepisuje historii vytvořením nového potvrzení pro každý odevzdání ve větev zdroje.Zahrnuje všechny změny ve zdroji, ale udržuje původ každé historie odevzdání, zahrnuje všechny změny ve zdroji, ale udržuje původ každé historie potvrzení.
VýběrZde nejprve vyzkoušíme větev, kterou je třeba rebasovat, a poté vyberte příkaz rebase
přidat aktualizace ostatním.
Zde si nejprve prohlédněte větev, která musí být sloučena jako první. Poté proveďte operaci sloučení a poslední potvrzení zdroje
budou sloučeny s posledním odevzdáním velitele.
Řešení konfliktůProtože historie přepisování bude přepsána tak, aby byla pochopena, bude konflikt obtížný
v některých případech.
Sloučit konflikt lze snadno zvládnout pochopením chyby, která byla provedena při slučování.
zlaté pravidloMěl by se používat na veřejných pobočkách, protože historie spáchání může způsobit zmatek.Při vykonávání veřejných poboček není žádná újma.
DosažitelnostPotvrzení, která byla kdysi dosažitelná, již nebude možné dosáhnout po rebase, protože historie změn se změní.

Závazky zůstanou dosažitelné
ze zdrojových větví.

Závěr

Sloučit a Rebase jsou dva dva výkonné nástroje Gitu a oba se používají k začlenění změn do větví, ale s rebase musíme být trochu opatrní, protože to přepíše historii závazků a jejich použití na veřejných pobočkách může bránit práci dalších způsobuje zmatek. Zatímco možnost sloučení můžete použít, protože její závazky jsou dosažitelné ze zdrojové větve a pokud máme dostatečné porozumění, můžete snadno vyřešit konflikty sloučení.

Doporučené články

Toto je průvodce největším rozdílem mezi Git ReBase a Merge. Zde také diskutujeme Git ReBase vs. Sloučit klíčové rozdíly s infografikou a srovnávací tabulkou. Další informace naleznete také v následujících článcích -

  1. Git Fetch vs Git Pull - hlavní rozdíly
  2. Abstrakce vs zapouzdření Porovnání top 6
  3. Architektura HBase s výhodami
  4. GIT Interview Otázky | Top 11
  5. Systém kontroly verzí GIT
  6. Git Push
  7. Zapouzdření do JavaScriptu
  8. Kompletní průvodce vzdáleným příkazem Git
  9. Tři fáze životního cyklu Gitu s pracovním postupem
  10. Jak používat GIT Cherry-pick s příkladem?

Kategorie: