logo

Git Rebase

Rebasing je proces pro opětovné použití commitů na vrcholu jiné základní cesty. Používá se k aplikaci sekvence odevzdání z různých větví do konečného odevzdání. Je to alternativa příkazu git merge. Jde o lineární proces slučování.

V Gitu se termín rebase označuje jako proces přesunu nebo kombinace sekvence odevzdání do nového základního odevzdání. Rebasing je velmi přínosný a vizualizoval proces v prostředí pracovního postupu rozvětvení funkcí.

Před sloučením je dobré vaši pobočku znovu založit.

Git Rebase

Obecně je to alternativa příkazu git merge. Sloučení je vždy dopředu se měnící záznam. Ve srovnání s tím je rebase přesvědčivý nástroj pro přepisování historie v Gitu. Spojuje různé commity jeden po druhém.

Předpokládejme, že jste provedli tři potvrzení ve vaší hlavní větvi a tři ve vaší druhé větvi s názvem test. Pokud toto sloučíte, sloučí se všechny odevzdání najednou. Ale pokud ji přeložíte, bude sloučena lineárním způsobem. Zvažte následující obrázek:

Git Rebase

Výše uvedený obrázek popisuje, jak git rebase funguje. Tři odevzdání hlavní větve se lineárně sloučí s odevzdáním zkušební větve.

Sloučení je nejpřímější způsob integrace větví. Provádí třícestné sloučení mezi dvěma posledními potvrzeními větve.

Jak Rebase

Když jste provedli některá potvrzení ve větvi funkce (testovací větev) a některá v hlavní větvi. Můžete znovu založit kteroukoli z těchto větví. Ke sledování změn (historie potvrzení) použijte příkaz git log. Pokladna na požadovanou pobočku, kterou chcete obnovit. Nyní proveďte příkaz rebase následovně:

Syntax:

 $git rebase 

Pokud jsou ve větvi nějaké konflikty, vyřešte je a proveďte níže uvedené příkazy, abyste mohli pokračovat ve změnách:

 $ git status 

Slouží ke kontrole stavu,

 $git rebase --continue 

Výše uvedený příkaz se používá k pokračování v provedených změnách. Pokud chcete změnu přeskočit, můžete přeskočit následovně:

personální výběrová komise význam
 $ git rebase --skip 

Když je rebasing dokončen. Přesuňte úložiště do původu. Zvažte níže uvedený příklad, abyste pochopili příkaz git merge.

Předpokládejme, že říkáte větev test2 na kterém pracujete. Nyní jste ve větvi test2 a provedli jste nějaké změny v souboru projektu nový soubor1.txt .

Přidejte tento soubor do úložiště:

 $ git add newfile1.txt 

Nyní potvrďte změny. Použijte níže uvedený příkaz:

 $ git commit -m 'new commit for test2 branch.' 

Výstup bude vypadat takto:

 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

Přepněte větev na hlavní:

 $ git checkout master 

Výstup:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

Nyní jste na hlavní větvi. Přidal jsem změny do svého souboru, říká nový soubor.txt . Níže uvedený příkaz se používá k přidání souboru do úložiště.

 $ git add newfile.txt 

Nyní potvrďte soubor pro změny:

 $ git commit -m ' new commit made on the master branch.' 

Výstup:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

Chcete-li zkontrolovat historii protokolů, proveďte níže uvedený příkaz.

 $ git log --oneline 

Výstup:

Git Rebase

Jak můžeme vidět v historii protokolů, v hlavní větvi je nový commit. Pokud chci znovu založit svou větev test2, co mám dělat? Podívejte se na níže uvedený scénář větve rebase:

Pobočka Rebase

Pokud máme mnoho commitů z různých větví a chceme je sloučit do jedné. K tomu máme dvě možnosti, buď jej můžeme sloučit, nebo přetvořit. Je dobré svou ratolest znovu založit.

Z výše uvedeného příkladu jsme se zavázali k hlavní větvi a chceme ji znovu založit na větvi test2. Podívejme se na následující příkazy:

 $ git checkout test2 

Tento příkaz vás přepne na větev test2 z masteru.

android.process.acore se stále zastavuje

Výstup:

 Switched to branch 'test2.' 

Nyní jste na větvi test2. Proto můžete změnit základ větve test2 s hlavní větví. Viz níže uvedený příkaz:

 $ git rebase master 

Tento příkaz znovu založí větev test2 a zobrazí se jako Použití: nové potvrzení na větvi test2 . Zvažte následující výstup:

Výstup:

Git Rebase

Git Interactive Rebase

Git usnadňuje Interactive Rebase; je to účinný nástroj, který umožňuje různé operace, jako je upravit, přepsat, změnit pořadí, a další informace o stávajících závazcích. Interaktivní Rebase lze provozovat pouze na aktuálně odhlášené větvi. Proto si na postranním panelu nastavte svou místní pobočku HEAD.

Interaktivní rebase Git lze vyvolat příkazem rebase, stačí napsat -i spolu s příkazem rebase. Tady ' i ' znamená interaktivní. Syntaxe tohoto příkazu je uvedena níže:

Syntax:

 $ git rebase -i 

Zobrazí seznam všech dostupných interaktivních možností.

Výstup:

Git Rebase

Po daném výstupu otevře editor s dostupnými možnostmi. Zvažte následující výstup:

Výstup:

Git Rebase

Když provedeme příkaz git interactive rebase, otevře se váš výchozí textový editor s výše uvedeným výstupem.

Možnosti, které obsahuje, jsou uvedeny níže:

  • Výběr
  • Přeformulovat
  • Upravit
  • Squash
  • Opravit
  • Exec
  • Přestávka
  • Pokles
  • Označení
  • Resetovat
  • Spojit

Výše uvedené možnosti plní své specifické úkoly s git-rebase. Pojďme si stručně porozumět každé z těchto možností.

Vybrat (-p):

Vyberte zde, že je zahrnuto potvrzení. Pořadí odevzdání závisí na pořadí výběrových příkazů během rebase. Pokud nechcete přidat odevzdání, musíte smazat celý řádek.

Přeformulovat (-r):

Přeformulování je velmi podobné příkazu pick. Volba reword pozastavila proces rebase a poskytuje možnost změnit zprávu odevzdání. Nemá vliv na žádné změny provedené odevzdáním.

co je regex java

Edit(y):

Možnost úpravy umožňuje úpravu odevzdání. Doplňující prostředky, závazky mohou být přidány nebo zcela změněny. Můžeme také provést další potvrzení před příkazem rebase continue. Umožňuje nám rozdělit velký commit na menší commit; navíc můžeme odstranit chybné změny provedené v odevzdání.

Squash (-s):

Možnost squash umožňuje spojit dva nebo více odevzdání do jednoho odevzdání. Také nám to umožňuje napsat novou zprávu o potvrzení pro popis změn.

Oprava (-f):

Je to docela podobné příkazu squash. Zahodilo zprávu o odevzdání, které má být sloučeno. K popisu obou změn se používá starší zpráva potvrzení.

Exec (-x):

Možnost exec vám umožňuje spouštět libovolné příkazy shellu proti odevzdání.

Přestávka (-b):

Volba přerušení zastaví znovuzaložení v právě poloze. Bude pokračovat v rebasování později s ' git rebase --pokračovat 'příkaz.

Pokles (-d):

Volba drop se používá k odstranění odevzdání.

Štítek (-l):

Možnost štítku se používá k označení aktuální polohy hlavy názvem.

Resetovat (-t):

Možnost reset se používá k resetování hlavy na štítek.

vypněte režim vývojáře

GitMerge vs. Rebase

Pro uživatele git je nejčastější záhadnou otázkou, kdy použít příkaz merge a kdy použít rebase. Oba příkazy jsou podobné a oba se používají ke sloučení odevzdání provedených různými větvemi úložiště.

Rebasing se nedoporučuje ve sdílené větvi, protože proces rebasing vytvoří nekonzistentní úložiště. Pro jednotlivce může být rebasing užitečnější než sloučení. Pokud chcete vidět kompletní historii, měli byste použít sloučení. Merge sleduje celou historii odevzdání, zatímco rebase přepisuje nový.

Příkazy Git rebase uvedené jako alternativa ke sloučení git. Mají však některé zásadní rozdíly:

Git Merge Git Rebase
Sloučení vytvoří konečné potvrzení při sloučení. Rebase Git nevytváří žádné potvrzení při rebasingu.
Sloučí všechny odevzdání do jednoho odevzdání. Vytváří lineární stopu odevzdání.
Vytváří grafickou historii, jejíž pochopení může být trochu složité. Vytváří lineární historii, kterou lze snadno pochopit.
Je bezpečné sloučit dvě větve. Git 'rebase' se zabývá náročnou operací.
Slučování lze provádět na veřejné i soukromé pobočce. Je špatnou volbou použít rebasing na veřejných pobočkách.
Sloučení integruje obsah větve funkcí s hlavní větví. Hlavní větev se tedy změní a historie větve prvku zůstává konzistentní. Změna základu hlavní větve může ovlivnit větev prvku.
Sloučení zachovává historii. Rebasing přepisuje historii.
Git merge představuje všechny konflikty najednou. Rebase Git představuje konflikty jeden po druhém.