Git

Hvordan Git Rebase

Hvordan Git Rebase
git rebase er et fusjonsverktøy akkurat som git flette. Men måten de jobber på er annerledes.

I denne artikkelen vil jeg snakke om hvordan Git rebase fungerer, forskjellene mellom Git rebase og Git fusjonerer, og hvordan du jobber med Git rebase. Så la oss komme i gang.

Git Rebase:

La oss si at du har et Git-arkiv med forpliktelsene EN, B, C i herre gren. Så opprettet du en ny gren noen gren og la til 2 nye forpliktelser D og E til noen gren gren.

Fig 1: innledende forpliktelseshistorikk.

La oss si, du glemte å legge til noe i herre gren. Så du går tilbake til herre filial og legg til en ny kommisjon G til herre gren. Din git-historie skal se ut som følger.

Fig 2: forplikt historie etter å ha lagt til forpliktelse G i hovedgrenen.

Alt ser bra ut. Nå, hvis du ville ha alle endringene du har gjort i noen gren gren å være i herre gren, kan du slå sammen noen gren gren til herre gren. Dette er hva git slå sammen gjøre.

Hva om du vil ha forpliktelsen G å være tilgjengelig i noen gren gren? Vel, du kan bruke git rebase til det.

Fra forpliktelseshistorikken i fig 2 kan du se at grenen noen gren starter fra forpliktelsen C. Hvis du gjør en git rebase på noen gren, da ville det starte fra forpliktelsen G som vist i fig 3 nedenfor. Merk at innholdet i forpliktelsen D og E endres også etter rebase-operasjonen. Forplikter D og E vil inkludere endringene i forpliktelsen G. Dette er grunnen til at jeg la til * symbolet før du forplikter deg D og E.

Hvis du vil vite hvordan forpliktelseshistorikken ville se ut hvis jeg slo den sammen, så ta en titt på fig 4. Jeg har tatt med den bare slik at du vil kunne sammenligne den med git rebase.

Fig 4: begå historie hvis git flette ble brukt.

Nå som du vet hva som er git rebase, forskjellen mellom git rebase og git fusjon og hvorfor git rebase den brukte, vil jeg vise deg hvordan du bruker den i neste del av denne artikkelen nedenfor.

Git Rebase arbeidsflyt:

I denne delen vil jeg lage et nytt git-arkiv på min lokale datamaskin og vise deg hvordan git rebase fungerer. Jeg anbefaler at du har god forståelse av git rebase før du bruker den på prosjektet ditt.

Først oppretter du et nytt Git-arkiv rebase-demo / på datamaskinen din som følger:

$ git init rebase-demo

Nå, naviger til rebase-demo / katalog som følger:

$ cd rebase-demo /

Lag nå en ny fil test.tekst som følger:

$ echo "A"> test.tekst

Testen.txt-filen inneholder bare en linje EN. La oss si at dette er din første prosjektkode.

Foreta endringene som følger:

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

Legg til en ny linje B til test.tekst filen som vist på skjermbildet nedenfor.

Gjør nå endringene som følger:

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

La oss nå legge til en linje C til test.tekst fil.

Foreta også endringene som følger:

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

Nå skal forpliktelseshistorikken til mastergrenen se slik ut:

$ git log --online

La oss si, du har noen nye ideer du vil prøve ut. Så la oss lage og kasse til en ny gren ny funksjon som følger:

$ git checkout -b ny-funksjon

Nå, legg til den nye ideen din (linjen D la oss si) til test.tekst fil.

Gjør nå endringene som følger:

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

Nå legger du linjen E til test.tekst fil.

Foreta endringene som følger:

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

Nå, begå historien til ny funksjon grenen skal se slik ut:

$ git log --online

Se hvordan forpliktelsene er i rekkefølge A < B < C < D < E?

Nå husker du at du har glemt å legge til noe i herre gren som du også ønsket å være i ny funksjon gren! Så, kassen til herre gren.

Jeg la til en ny linje på slutten av test.tekst filen som du kan se.

Gjør nå endringene som følger:

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

Nå, begå historien til herre gren skal se slik ut.

EN < B < C < G

Nå, for å omsette forpliktelsene fra herre gren til ny funksjon filial, første utsjekking til ny funksjon gren.

$ git checkout ny funksjon

Gjør en git rebase av herre gren som følger:

$ git rebase master

Noen smelter sammen konflikt! La oss fikse det.

Vel, endringene jeg har gjort i forpliktelsen G og D er i konflikt med hverandre. Jeg vil beholde begge disse.

Etter å ha løst sammenslåingskonflikten, test.tekst filen skal se slik ut:

Legg nå til endringene i iscenesettingsområdet som følger:

$ git add .

Fortsett nå rebasen som følger:

$ git rebase - fortsett

Nok en sammenslåingskonflikt! Vel, dette kan skje. Rebase endrer git commit-historikken. Så ting som dette forventes.

Det ser ut til at sammenslåingsprosessen mislyktes på grunn av noen tomme linjer. La oss fikse det.

Etter å ha løst sammenslåingskonflikten, test.tekst filen skal se ut som følger.

Legg nå til endringene i iscenesettingsområdet som følger:

$ git add .

Fortsett nå rebase-operasjonen som følger:

$ git rebase - fortsett

Git rebase er fullført.

Som du kan se, oppdateres forpliktelsesloggen til den nye funksjonen. Nå er forpliktelseshistorikken som følger:

EN < B < C < G < D < E

Akkurat som forventet.

Finalen test.tekst filen skal se ut som følger.

Git rebase er et kraftig verktøy. Men du bør aldri bruke den på delte Git-arkiver. Bruk den bare på Git-arkivene du bare jobber. Ellers vil du møte mange problemer underveis.

Så det er slik du bruker git rebase. Takk for at du leser denne artikkelen.

5 beste arkadespill for Linux
I dag er datamaskiner seriøse maskiner som brukes til spill. Hvis du ikke kan få den nye høye poengsummen, vil du vite hva jeg mener. I dette innlegge...
Kamp for Wesnoth 1.1. 3.6 Utvikling utgitt
Kamp for Wesnoth 1.1. 3.6 utgitt i forrige måned, er den sjette utgivelsen i 1.1. 3.x-serien, og den leverer en rekke forbedringer, spesielt til bruke...
Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...