Den Ultimative Guide til Git-Merge og Git Rebase

Velkommen til vores ultimative guide til git merge og git rebase kommandoer. Denne tutorial vil lære dig alt hvad du behøver at vide om at kombinere flere grene med Git.

Git Merge

kommandoengit merge vil flette alle ændringer, der blev foretaget i kodebasen på en separat gren til din nuværende gren som en ny commit.,

kommando syntaks som følger:

git merge BRANCH-NAME

For eksempel, hvis du arbejder i en filial med navnet dev og vil gerne fusionere de nye ændringer, der blev foretaget i en gren ved navn new-features, ville du udføre følgende kommando:

git merge new-features

Bemærk: Hvis der er nogen uforpligtede ændringer på dit nuværende gren, Git vil ikke tillade dig at fusionere, indtil alle ændringer i din nuværende filial er blevet begået., Til at håndtere disse ændringer, kan du enten:

Opret en ny filial, og commit ændringerne

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

Opgive alle de ændringer

git reset --hard # removes all pending changes

Git Rebase

Rebasing en filial i Git er en måde at flytte den helhed af en gren af virksomheden til et andet punkt i træet. Det enkleste eksempel er at flytte en gren længere op i træet., Siger, at vi har en filial, der afviger fra master-branch ved punkt Et:

 /o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master

Når du rebase du kan flytte det ud som dette:

 /o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master

for At rebase, sørg for at du har alle de begår du ønsker i rebase i din master-branch. Tjek den gren, du vil rebase, og skriv git rebase master (hvor master er den gren, du vil rebase på)., som for eksempel en gren, der var baseret på en anden gren (lad os kalde det-funktion) omgjort på master:

 /---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master

Efter git rebase master branch eller git rebase master, når du har tjekket ud den gren, du vil 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 konsollen

for At bruge git rebase i konsollen med en liste over begår du kan vælge, redigere eller fald i rebase:

  • Enter git rebase -i HEAD~5 med det sidste nummer, der helst antal commits fra den seneste baglæns, du ønsker at gennemgå.,
  • i vim skal du trykke på esc, derefter i for at begynde at redigere testen.
  • i venstre side kan du overskrive pick med en af kommandoerne nedenfor. Hvis du ønsker, at squash en commit i en tidligere og kassere commit-besked, skal du indtaste f i stedet for pick commit.
  • Gem og afslut din teksteditor.
  • når rebase stoppes, skal du foretage de nødvendige justeringer og derefter bruge git rebase --continue, indtil rebase er vellykket.,
  • Hvis det rebases held så er du nødt til at tvinge skubbe dine ændringer med git push -f for at tilføje omgjort version til din remote repository.
  • hvis der er en fusionskonflikt, er der en række måder at løse dette på, herunder at følge forslagene i denne vejledning. En måde er at åbne filerne i en teksteditor og slette de dele af koden, du ikke ønsker. Brug derefter git add <file name> efterfulgt af git rebase --continue., Du kan springe over i strid begå ved at indtaste git rebase --skip, stop rebasing ved at køre git rebase --abort i din konsol.

Flet konflikter

en flet konflikt er, når du foretager forpligtelser på separate grene, der ændrer den samme linje på modstridende måder.,hvilken version af filen, til at holde en fejlmeddelelse, der ligner følgende:

CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.

Hvis du ser på det resumé.txt fil i din kode-editor, kan du se, hvor konflikten fandt sted:

<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address

Git tilføjet nogle ekstra linjer til filen:

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

Git-Merge vs Git Rebase

Både git merge og git rebase, som er meget nyttige kommandoer, og den ene er ikke bedre end den anden., Der er dog nogle meget vigtige forskelle mellem de to kommandoer, som du og dit team skal tage i betragtning.

Når git merge køres, oprettes en ekstra merge commit. Hver gang du arbejder i dit lokale lager, kan det at have for mange sammenfletningsforpligtelser få commithistorikken til at se forvirrende ud. En måde at undgå fusionsforpligtelsen er at bruge git rebase i stedet.

git rebase er en meget kraftfuld funktion. Når det er sagt, er det også risikabelt, hvis det ikke bruges på den rigtige måde., git rebase ændrer commit-historien, så brug den med omhu. Hvis rebasing sker i fjernarkivet, kan det skabe mange problemer, når andre udviklere forsøger at trække de seneste kodeændringer fra fjernarkivet. Husk kun at køre git rebase i et lokalt arkiv.

det er alt hvad du behøver at vide for at fusionere og rebase med det bedste af dem.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *