de Fleste koden integrasjoner skje med en sammenslåing, men noen ganger kan en utvikler som ønsker å få sine lokale kode fanget opp med master gren gjennom en rebase i stedet. I dette eksemplet vil vi demonstrere hvordan git rebase en gren til master i stedet for å bruke kommandoen flett, mens peker også ut effekten av å utføre en git rebase å mestre drift.
Hva gjør Git rebase å mestre betyr?,
I denne opplæringen, vil vi ta gren kalt utvikle og rebase det på spissen av master.
for å utvikle gren brøt ut fra master i begå C, slik at begge grener dele filer a.html, b.html og c.html. Se bildet nedenfor for å hjelpe til med å visualisere dette.
Siden grenen oppstått, master har lagt begår D og E. Dette betyr master har to filer som utvikler ikke har, nemlig d.html og e.html.,
Dette er hvordan Git repository ser ut før en git rebase å mestre.
Videre, siden split, det har vært to nye forplikter seg på å utvikle gren, legge til filer f.html og g.html. Dette er filer utvikle branch har at master ikke grenen.
Dette er hvordan GitLab depotet ser etter git rebase å mestre.,
Virkningen av Git rebase
Etter en vellykket utvikle gren til master rebase:
- filene i master gren vil ikke endre
- utvikle filial skal i tillegg tilegne seg alle av master filialens nye filer
- utvikle stream gren punktet vil endre.
- Det vil virke som om den utvikle gren delt etter begå E på master-grenen.
- Før rebase, utvikle gren split fra master i begå C.,
Git rebase å mestre kommandosyntaksen
operasjonen for å utføre en Git rebase til master er rett frem. Ganske enkelt legges til slutten av kommandoen navnet på kilden gren og deretter navnet på grenen for å rebase. For å rebase utvikle for å mestre kommandoen er som følger:
git rebase master develop
Advarsel: Det er en git rebase på bryter som noen ganger utviklere feilaktig å tro de trenger for å inkludere med rebase kommando. Dette vil føre forplikter seg til å være discared og filer til å være tapt., Ikke gjør den feilen å utføre en git rebase på drift.
Før rebase, utvikle grenen hadde bare fem filer.
Hver gren har fem filer før git rebase å mestre drift.
Etter Git rebase å mestre, og utvikle branch har syv-filer. Den har beholdt alle de originale filene og kjøpt to nye filer fra spissen av master gren., Imidlertid, antall filer i master gren forblir uendret.
Etter git rebase av å utvikle for å mestre, og utvikle gren kjøper alt av master-filer.
Det faktum at master grenen ikke kjøpe alle filer fra den utvikle gren ofte kaster nytt Git brukere av, men dette er forventet atferd. En git rebase ikke synkronisere mellom grenene. Det rett og slett fanger en gren opp med de siste endringene fra en annen.,
antall filer i å utvikle øke etter git rebase å mestre.
Fortsett med forsiktighet
Når en Git rebase oppstår, depotets begå historie er uopprettelig endret. Etter rebase i vårt eksempel, begår F og G er tildelt ny begå id-ene, og den gamle begå id-er forkastet. Av denne grunn, vil du ofte se rebased begår merket som F’ og ‘G’ for å understreke det faktum at nye begå id-er som har blitt tildelt.,
Hvis du rebase en gren som deles med en annen utvikler og presse tilbake til GitHub eller GitLab, en fyr som utvikleren vil kjøre inn i et utvalg eller problemer når de prøver å trekke den rebased depotet inn i deres lokal utvikling miljø. Begår de har lokalt vil ha forsvunnet på fjernkontrollen, og den eksterne gren vil ha en inkompatibel gren historie. Som du kan forestille deg, rebasing en felles gren eller squashing Git begår kan skape havok.,
Rebase til GitHub eller GitLab
faktisk, hvis du rebase og prøve å presse til å GitLab eller GitHub, serveren vil ikke tillate operasjonen som skal utføres. For å rebase til GitHub eller GitLab, en utvikler må legge til de –force bytte til git push-kommandoen til å tvinge endringer for å bli akseptert.
git push origin --force
En GitLab eller GitHub rebase presse vil bli avvist, med mindre tvang.,
Den aksepterte logikk er å bare git rebase å mestre grener lokale til din personlige arbeidsområdet. På den måten vil din Git rydde opp kommandoer påvirker ikke noen andre. Ikke utfør en git rebase å mestre på grener som deles med andre utviklere. En rebase på master er greit, bare ikke den andre veien rundt. Ellers er du sannsynlig å bryte bygge og trykk eller dra-operasjoner vil bli satt på stand-by, frustrasjon fortsatte utvikling og gjør deg persona non velkommen med resten av utviklere og DevOps team.