Git

Cum să Git Rebase

Cum să Git Rebase
git rebase este un utilitar de îmbinare la fel ca git merge. Dar modul lor de lucru este diferit.

În acest articol, voi vorbi despre modul în care funcționează Git rebase, diferențele dintre Git rebase și Git merge și cum să lucrați cu Git rebase. Asadar, haideti sa începem.

Git Rebase:

Să presupunem că aveți un depozit Git cu comitetele A, B, C în maestru ramură. Apoi, ați creat o nouă ramură ceva ramură și a adăugat 2 confirmări noi D și E la ceva ramură ramură.

Fig 1: istoricul inițial de comitere.

Acum, să spunem, ați uitat să adăugați ceva în maestru ramură. Deci, te întorci la maestru ramificați și adăugați un nou commit G la maestru ramură. Istoricul dvs. git ar trebui să arate după cum urmează.

Fig 2: istoric de confirmare după adăugarea de confirmare G în ramura master.

Totul arată bine. Acum, dacă ați dorit fiecare schimbare pe care ați făcut-o în ceva ramură ramură să fie în maestru filială, puteți îmbina fișierul ceva ramură ramură către maestru ramură. Aceasta este ceea ce git combina do.

Ce se întâmplă dacă doriți comiterea G să fie disponibil în ceva ramură ramură? Ei bine, puteți folosi git rebase pentru asta.

Din istoricul de comitere din fig 2, puteți vedea că ramura ceva ramură începe de la comitere C. Dacă faci un git rebase pe ceva ramură, atunci ar începe de la comitere G așa cum se arată în fig 3 de mai jos. Rețineți că, conținutul comiterii D și E se va schimba și după operația de reîncărcare. Comitetele D și E va include modificările în commit G. Acesta este motivul pentru care am adăugat * simbol înainte de comitere D și E.

Dacă doriți să știți cum ar arăta istoricul de comitere dacă l-aș combina, atunci aruncați o privire la fig 4. L-am inclus doar astfel încât să îl puteți compara cu git rebase.

Fig 4: comite istoric dacă s-a folosit git merge.

Acum, că știți ce este git rebase, diferența dintre git rebase și git merge și de ce a folosit git rebase, vă voi arăta cum să îl utilizați în următoarea secțiune a acestui articol de mai jos.

Flux de lucru Git Rebase:

În această secțiune, voi crea un nou depozit git pe computerul meu local și vă voi arăta cum funcționează git rebase. Vă recomand să aveți o bună înțelegere a git rebase înainte de a o aplica pe proiectul dvs.

Mai întâi, creați un nou depozit Git rebase-demo / pe computer, după cum urmează:

$ git init rebase-demo

Acum, navigați la rebase-demo / director după cum urmează:

$ cd rebase-demo /

Acum, creați un fișier nou Test.txt după cum urmează:

$ echo "A"> test.txt

Testul.fișierul txt conține doar o singură linie A. Să presupunem că acesta este codul inițial de proiect.

Acum, comiteți modificările după cum urmează:

$ git add .
$ git commit -m 'A'

Acum, adăugați o altă linie B la Test.txt după cum se arată în captura de ecran de mai jos.

Acum, comiteți modificările după cum urmează:

$ git add .
$ git commit -m 'B'

Acum, să adăugăm o altă linie C la Test.txt fişier.

De asemenea, comiteți modificările după cum urmează:

$ git add .
$ git commit -m 'C'

Acum, istoricul de comitere al ramurii principale ar trebui să arate după cum urmează:

$ git log --oneline

Acum, să spunem, aveți câteva idei noi pe care doriți să le încercați. Deci, haideți să creăm și să verificăm o nouă sucursală optiune noua după cum urmează:

$ git checkout -b caracteristică nouă

Acum, adăugați noua idee (linia D să spunem) la Test.txt fişier.

Acum, comiteți modificările după cum urmează:

$ git add .
$ git commit -m 'D'

Acum, adăugați linia E la Test.txt fişier.

Aduceți modificările după cum urmează:

$ git add .
$ git commit -m 'E'

Acum, istoria de comitere a optiune noua ramura ar trebui să arate după cum urmează:

$ git log --oneline

Vedeți cum sunt confirmările în ordinea A < B < C < D < E?

Acum, vă amintiți că ați uitat să adăugați ceva la maestru ramură în care ai vrut să fii și tu în optiune noua ramură! Deci, verificați la maestru ramură.

Am adăugat o nouă linie la sfârșitul anului Test.txt fișier așa cum puteți vedea.

Acum, comiteți modificările după cum urmează:

$ git add .
$ git commit -m 'G'

Acum, istoria de comitere a maestru ramura ar trebui să arate așa.

A < B < C < G

Acum, pentru a reface comitetele din maestru ramură către optiune noua sucursală, prima plată la optiune noua ramură.

$ git checkout caracteristică nouă

Acum, faceți un git rebase din maestru ramificați după cum urmează:

$ git rebase master

Unii conflict de fuziune! Să remediem asta.

Ei bine, modificările pe care le-am făcut la comitere G și D sunt în conflict unul cu celălalt. Vreau să le păstrez pe amândouă.

După remedierea conflictului de fuziune, Test.txt fișierul ar trebui să arate după cum urmează:

Acum, adăugați modificările la zona de etapă după cum urmează:

$ git add .

Acum, continuați refacerea operând după cum urmează:

$ git rebase --continue

Un alt conflict de fuziune! Ei bine, acest lucru se poate întâmpla. Rebase modifică istoricul git commit. Deci, lucruri de genul acesta sunt de așteptat.

Se pare că procesul de îmbinare a eșuat din cauza unor linii goale. Să remediem asta.

După remedierea conflictului de fuziune, Test.txt fișierul ar trebui să arate după cum urmează.

Acum, adăugați modificările la zona de etapă după cum urmează:

$ git add .

Acum, continuați operația de rebase după cum urmează:

$ git rebase --continue

Git rebase este completă.

După cum puteți vedea, istoricul de comitere al ramurii de funcții noi este actualizat. Acum, istoricul de comitere este după cum urmează:

A < B < C < G < D < E

Așa cum era de așteptat.

Finala Test.txt fișierul ar trebui să arate după cum urmează.

Git rebase este un instrument puternic. Dar nu trebuie să-l folosiți niciodată în depozite Git partajate. Folosiți-l numai în depozitele Git pe care le lucrați numai. În caz contrar, veți întâmpina o mulțime de probleme pe parcurs.

Deci, așa utilizați git rebase. Vă mulțumim că ați citit acest articol.

Cum se instalează League Of Legends pe Ubuntu 14.04
Dacă ești fan al League of Legends, atunci aceasta este o oportunitate pentru tine de a testa rula League of Legends. Rețineți că LOL este acceptat pe...
Instalați cel mai recent joc de strategie OpenRA pe Ubuntu Linux
OpenRA este un motor de jocuri de strategie în timp real Libre / Free care recreează primele jocuri Westwood, cum ar fi clasicul Command & Conquer: Re...
Instalați cel mai recent Dolphin Emulator pentru Gamecube și Wii pe Linux
Emulatorul Dolphin vă permite să jucați jocurile alese de Gamecube și Wii pe computerele personale Linux (PC). Fiind un emulator de joc liber disponi...