Git je distribuovaný systém pro správu verzí - nástroj pro sledování změn provedených v sadě souborů nebo koordinaci práce v průběhu času. Programátoři jej často používají ke koordinaci změn zdrojového kódu softwaru a nejlepší části; lze jej použít ke sledování jakéhokoli obsahu. Je speciálně navržen tak, aby zvládl vše od malých až po velké projekty s maximální rychlostí a efektivitou. Je to velmi flexibilní, což znamená, že jednotlivci mohou sdílet práci přímo mezi svými osobními úložišti a skupiny mohou koordinovat svůj pracovní postup prostřednictvím centrálního úložiště. Jednoduše umožňuje dvěma vývojářům, kteří sedí na dvou různých místech, provádět a zaznamenávat změny nezávisle, vše bez centrálního úložiště.
Sloučení je běžná praxe v Gitu, která se používá k integraci změn z jedné větve do druhé. Sloučit Git je příkaz, který potvrzuje změny na jiném místě. Umožňuje vývojářům vzít jejich nezávislé řádky kódu vytvořené větví Git a integrovat je do jediné větve. Tím se změní pouze cílová větev, zatímco historie zdrojové větve zůstane. Git rebase je další příkaz používaný v zásadě ke stejnému účelu, s výjimkou toho, že to dělá úplně jinak. Oba dělají totéž - začleňují závazky z jedné větve do druhé - ale rozdíl spočívá v tom, jak to dělají. Zdůrazňujeme některé klíčové rozlišovací body při porovnání těchto dvou.
Sloučení Git je příkaz, který sjednocuje dvě nebo více větví historie odevzdání. Sloučení často spojuje pouze dvě větve, i když Git podporuje slučování tří, čtyř nebo více větví současně. Sloučení Git je používáno Git pull pro začlenění změn z jedné větve do druhé nebo z jiného úložiště. Sloučení musí probíhat v rámci jednoho úložiště, což znamená, že všechny pobočky, které je třeba sloučit, by měly být přítomny ve stejném úložišti. Sloučení situace obvykle vyplývá ze dvou nebo více uživatelů, kteří se snaží aktualizovat společný kód. Nejčastěji uživatel sloučí pobočku do jiné pobočky ve svém lokálním úložišti v místním prostředí. Sloučení Git specificky integruje obsah zdrojové větve s cílovou větví. Cílová větev se změní, zatímco větev zdroje zůstává.
Git rebase je další alternativou ke sloučení, které se používá k integraci další větve s pobočkou, kde právě pracujete, kromě toho, že udržuje lineární historii potvrzení. Účelem Git rebase je přesunout větev z jednoho místa na druhé. Vzhledem k tomu, že revize jsou neměnné, nelze je přesouvat, takže to znamená, že budou vytvořeny nové revize se stejnými changesety a metadaty. Rebase zásadně mění představu o tom, kdy a kde byla vyvinuta posloupnost závazků, což má za následek ztrátu některých aspektů historie vývoje. To znamená, že původní závazek, na kterém byl vývoj původně založen, se změní. Efektivně začleňuje všechny nové závazky do hlavní větve přepisováním historie. Výsledkem je, že pro každou revizi v původní větvi vytvoří nové revize.
- Přestože sloučení i rebáza jsou nejčastějšími způsoby integrace změn v Gitu a slouží stejnému účelu - spojit více větví do jedné - rozdíl spočívá v tom, jak toho dosáhnout. Sloučení Git integruje obsah zdrojové větve s cílovou větev, přičemž zachovává předky každé historie potvrzení, zatímco Git rebase integruje všechny nové revize v hlavní větvi přepsáním historie vytvořením nových revizí pro každou revizi ve zdrojové větvi..
- Při slučování Git se nejprve přepnete na větev, která má být sloučena, a poté pomocí příkazu sloučení vyberte větev, do které se má sloučit. Vzhledem k tomu, že větev ukazuje na potvrzení a že potvrzení je granularita, ke které jste přiřadili změny, sloučení příkaz se sloučí na úrovni pobočky nebo potvrzení. Na druhou stranu Rebase je trochu jiná. Nejprve vyberte větev, která má být rebase obnovena, a poté pomocí příkazu rebase vyberte, kam ji umístit.
- Sloučení vytvoří nový závazek, který představuje sloučení mezi dvěma větvemi. Integruje změny z různých paralelních linií vývoje (větví) dohromady vytvořením slučovacího potvrzení. Účelem je spojit dvě nebo více větví dohromady, včetně všech změn od okamžiku divergence do aktuální větve. Rychlý posun vpřed je výchozí chování slučování v Gitu. Na druhé straně rebasing mění individuální závazky tím, že přepisuje historii projektu vytvořením nových revizí pro každou revizi v původní větvi, což zase vede k lineární historii bez divergentních větví..
- Sloučení Git nemění historii, při zachování kontextu větve, což znamená, že stávající větve se nijak nemění. Vytváří nové potvrzení (pokud se nejednalo o rychlou sloučení vpřed), ale závazky zůstávají dosažitelné z větve. Git rebase na druhé straně zefektivňuje potenciálně složitou historii. Potvrzení se přepisuje, staré verze se zapomínají a DAG revizí se mění. Závazky již nelze dosáhnout pomocí rebase, což znamená, že již nemůžete rebase publikovat znovu.
Stručně řečeno, slučování a rebase jsou dva způsoby integrace změn v Gitu, ale liší se v tom, jak to dělají. Sloučit je jednokroková operace s jedním místem pro řešení konfliktů a závazky, které byly dosažitelné z větve, zůstanou dosažitelné. Na druhou stranu Rebase znovu opakuje každou revizi individuálně přepisováním historie vytvořením nových revizí pro každou revizi ve zdrojové větvi. To, co bylo kdysi dosažitelné, tedy již není dosažitelné. Rebase zásadně mění představu o tom, kdy a kde byla vyvinuta posloupnost závazků.