Většina kódu integrace stát se sloučit, ale občas vývojář chce dostat své místní kód dohnal hlavní větvi přes rebase místo. V tomto příkladu ukážeme, jak git rebase větev zvládnout namísto použití příkazu merge, a zároveň poukázat na dopad provádění rebase Git na hlavní operaci.
co znamená git rebase to master?,
v tomto tutoriálu vezmeme větev s názvem develop a rebase ji na špičku master.
větev develop se oddělila od master na commitu C, takže obě větve soubory sdílejí a.html, b.html a c.html. Viz obrázek níže, který vám pomůže vizualizovat to.
od té doby, co došlo k větvi, přidal master commity D A E. to znamená, že master má dva soubory, které vývoj nemá, a to d.html a e.html.,
to je To, jak Git repozitář vypadá před git rebase master.
kromě toho, od rozdělení, došlo k dvěma novým commitům na větvi develop, přidání souborů f.html a g.html. Jedná se o soubory, které větev develop má, že hlavní větev ne.
to je To, jak GitLab repozitář vypadá po git rebase master.,
Dopad Git rebase
Po úspěšném rozvíjet větev master rebase:
- soubory v hlavní větvi se nezmění
- rozvíjet pobočka bude navíc získat všechny hlavní větvi nové soubory
- rozvíjet proud, je větev bod se bude měnit.
- objeví se, jako by se větev develop rozdělila po commitu E na hlavní větvi.
- před rebázou se větev develop rozdělila od master na commit C.,
git rebase to master command syntax
operace k provedení git rebase pro master je přímo vpřed. Jednoduše připojte ke konci příkazu název zdrojové větve a poté název větve k rebase. Rebase rozvíjet zvládnout příkazu je následující:
git rebase master develop
Upozornění: Tam je git rebase na spínač, který někdy vývojáři nesprávně domnívají, že je třeba zahrnout s rebase příkaz. Pokud tak učiníte, způsobí to, že se odevzdá diskared a soubory budou ztraceny., Nedělejte chybu při provádění rebázy git na operaci.
před rebázou měla větev develop pouze pět souborů.
Každá větev má pět souborů před git rebase master provoz.
po git rebase to master má větev develop sedm souborů. Zachoval si všechny své původní soubory a získal dva nové soubory ze špičky hlavní větve., Počet souborů v hlavní větvi však zůstává nezměněn.
Po git rebase rozvíjet zvládnout, rozvíjet pobočka získá všechny magisterské soubory.
skutečnost, že hlavní větev nezískala žádné soubory z větve develop, často vyhodí nové uživatele Git, ale toto je očekávané chování. Rebáza git se mezi větvemi nesynchronizuje. Jednoduše zachycuje jednu větev s nejnovějšími změnami od druhé.,
počet souborů v rozvoji zvýšit po git rebase master.
postupujte opatrně
když dojde k rebáze git, historie odevzdání úložiště se nenávratně změní. Po rebase v našem příkladu jsou commity F A G přiřazeny zcela nové ID commitu a staré ID commitu jsou vyřazeny. Z tohoto důvodu často uvidíte rebased commity označené jako F ‚A G‘, abyste zdůraznili skutečnost, že byly přiřazeny nové ID odevzdání.,
Pokud jste rebase větve sdílené s jiným vývojářem, a tlačit své změny zpět na GitHub nebo GitLab, kolegy vývojáře bude probíhat do různých nebo problémy, když se pokusí vytáhnout rebased úložiště do jejich místního rozvoje, životního prostředí. Commity, které mají lokálně, zmizí na dálkovém ovladači a vzdálená větev bude mít nekompatibilní historii větví. Jak si dokážete představit, rebasing sdílené větve nebo squashing git commits může způsobit havok.,
Rebase na GitHub nebo GitLab
Ve skutečnosti, pokud jste rebase a snaží se tlačit na GitLab nebo GitHub, server nedovolí operace musí být provedena. Chcete –li rebase na GitHub nebo GitLab, musí vývojář přidat přepínač síly do příkazu git push, aby donutil změny, které mají být přijaty.
git push origin --force
GitLab nebo GitHub rebase push bude zamítnuta, není-li nucen.,
přijatá logika je pouze git rebase zvládnout větve Místní do vašeho osobního pracovního prostoru. Tímto způsobem vaše příkazy Git clean up neovlivňují nikoho jiného. Neprovádějte rebázu git, abyste zvládli větve sdílené s ostatními vývojáři. Rebase na master je v pořádku, prostě ne naopak. Jinak jste pravděpodobně rozbít stavět a push nebo pull operace bude kladen na stand-by, maří další vývoj a nutí vás persona non grata s ostatními vývojáři a DevOps tým.