Velkommen til vår ultimate guide til git merge
og git rebase
kommandoer. Denne opplæringen vil lære deg alt du trenger å vite om å kombinere flere grener med Git.
Git Merge
git merge
– kommandoen vil flette alle endringene som ble gjort i koden base på en egen gren til gjeldende gren som en ny revisjon.,
kommandosyntaksen er som følger:
git merge BRANCH-NAME
For eksempel, hvis du jobber i en avdeling som heter dev
og ønsker å slå sammen eventuelle nye endringer som ble gjort i en avdeling som heter new-features
du skulle gi følgende kommando:
git merge new-features
Merk: Hvis det er noen ukommiterte endringer på gjeldende gren, Git vil ikke tillate deg å slå sammen før alle endringer i gjeldende gren har blitt begått., For å håndtere disse endringene, kan du enten:
du vil Opprette en ny gren og forplikte seg endringene
git checkout -b new-branch-namegit add .git commit -m "<your commit message>"
Stash dem
git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree
Forkaste alle endringer
git reset --hard # removes all pending changes
Git Rebase
Rebasing en filial i Git er en måte å flytte helhet av en filial til et annet punkt i treet. Den enkleste eksempel er å flytte en gren lenger opp i treet., Si vi har en gren som skilte seg fra master gren på punkt En:
/o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master
Når du rebase kan du flytte det slik:
/o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master
for Å rebase, sørg for at du har alle de begår du vil i rebase i master-gren. Sjekk ut den grenen du ønsker å rebase og type git rebase master
(der master er den grenen du ønsker å rebase på)., som for eksempel en gren som var basert på en annen gren (la oss kalle den funksjonen) er rebased på master:
/---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master
Etter git rebase master branch
eller git rebase master
når du har sjekket deg ut gren, vil du få:
/---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch
Git rebase interaktive i konsoll
for Å bruke git rebase
i konsollen med en liste over forplikter du kan velge, redigere eller nedgang i rebase:
- Enter
git rebase -i HEAD~5
med det siste nummeret som helst antall innsendinger fra de siste bakover du ønsker å gjennomgå., - I vim, trykker du på
esc
, deretteri
for å starte redigering av testen. - På venstre side kan du overskrive
pick
med en av kommandoene nedenfor. Hvis du ønsker å ta knekken på en forplikte seg til en tidligere og kast begå en melding, skriver du innf
i stedet forpick
av forplikte seg. - Lagre og avslutte tekst-editor.
- Når rebase er stoppet, gjør de nødvendige justeringer, og så bruke
git rebase --continue
til rebase er vellykket., - Hvis det rebases hell deretter må du tvinge trykk endringene med
git push -f
for å legge til rebased versjon til den eksterne depot. - Dersom det er en sammenslåing konflikt, er det en rekke måter å fikse dette, herunder å følge anbefalingene i denne veiledningen. En måte er å åpne filene i en tekst-editor og slette deler av koden som du ikke ønsker. Deretter kan du bruke
git add <file name>
etterfulgt avgit rebase --continue
., Du kan hoppe over konfliktfylt forplikte seg ved å fylle inngit rebase --skip
, stoppe rebasing ved å kjøregit rebase --abort
i konsollen.
slå sammen Konflikter
merge konflikten er når du gjør forplikter seg på separate grener som endrer den samme linjen i en motstridende måter.,hvilken versjon av filen for å holde i en feilmelding som ligner på følgende:
CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.
Hvis du ser på resumé.txt
fil i koden din editor, kan du se hvor konflikten fant sted:
<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address
Git lagt til noen ekstra linjer i filen:
<<<<<<< HEAD
=======
>>>>>>> updated_address
Git Fusjonere vs Git Rebase
Begge git merge
og git rebase
er meget nyttige kommandoer, og man er ikke bedre enn den andre., Det er imidlertid noen svært viktige forskjeller mellom de to kommandoer som du og ditt team bør ta hensyn til.
Når git merge
kjøres, en ekstra flette forplikte er opprettet. Når du arbeider i ditt lokale depot, ved å ha for mange fusjonere begår kan gjøre begå historie ser forvirrende. En måte å unngå merge begå er å bruke git rebase
i stedet.
git rebase
er en svært kraftig funksjon. Det blir sagt, det er risikabelt som godt hvis den ikke blir brukt på riktig måte., git rebase
endrer begå historie, så bruk den med omhu. Hvis rebasing er gjort i den eksterne depot, da det kan skape mye problemer når andre utviklere prøver å trekke den nyeste koden endringer fra den eksterne depot. Husk å bare kjøre git rebase
i en lokal depotet.
Det er alt du trenger å vite for å slå sammen og rebase med de beste av dem.