Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Synkronisering af Repositories | Mere Avancerede Workflows
Github-Grundlæggende

Synkronisering af Repositories

Stryg for at vise menuen

Som nævnt i det forrige kapitel, skal vi synkronisere vores lokale branch med det eksterne repository. For at gøre dette skal vi køre kommandoen git pull:

git pull
Pull-forsøg

Da vi kørte kommandoen git pull, hentede Git opdateringer, men bemærkede at vores lokale og eksterne branches er divergeret, hvilket betyder, at der er ændringer på begge branches, som skal afstemmes. Git kunne ikke fortsætte, fordi det skal vide, hvordan disse forskelle skal håndteres, så lad os sætte merge-indstillingen og køre git pull-kommandoen igen:

git config pull.rebase false
Note
Bemærk

Vi gennemgår rebase-operationen senere i dette kursus.

git pull
Sammenfletningskonflikt

Git forsøgte at flette de lokale og eksterne ændringer til README.md automatisk, men stødte på en flettekonflikt. Lad os se på commit-træet, som viser, hvor forgreningen og konflikterne er opstået:

git log --graph --oneline --all
Commit-træ

Løsning af konflikten

Som du kan se, deler vores nuværende lokale commit og committet i den eksterne main-gren en fælles forfader, men de forgrener sig, hvilket fører til den flettekonflikt, vi skal løse. For at gøre dette åbner vi README.md-filen i Vim editoren:

vim README.md
Konflikter i Vim

For at løse denne konflikt kan vi gå ind i insert mode ved at trykke på i, fjerne konfliktmarkørerne og kombinere ændringerne på følgende måde:

Løst konflikt

Dernæst skal du trykke på Escape-tasten, skrive :wq og trykke på Enter-tasten for at gemme ændringerne og afslutte Vim. For at fuldføre sammenfletningen skal filen README.md nu tilføjes til staging-området og derefter committes ved hjælp af de respektive kommandoer:

git add README.md
git commit
Note
Bemærk

Efter at have kørt kommandoen git commit, åbnes standardteksteditoren (formentlig Vim). Du kan enten beholde standard commit-beskeden og afslutte Vim på samme måde som før, eller du kan redigere beskeden og derefter afslutte.

Commit af flettet fil

Endelig kan vi trygt køre kommandoen git push og verificere, at trevejsfletningen var succesfuld ved at vise commit-træet:

git log --graph --oneline --all
Commit-træ

Lad os gennemgå, hvad vi gjorde i disse to kapitler:

  1. Vi simulerede samarbejde ved at lave ændringer både lokalt og eksternt i filen README.md;

  2. Vi lavede først et commit direkte til det eksterne repository, og derefter lavede vi en anden ændring lokalt;

  3. Da vi forsøgte at pushe vores lokale ændringer, stødte vi på en konflikt, fordi det eksterne repository havde nye opdateringer;

  4. For at løse dette trak vi ændringerne fra det eksterne repository, hvilket resulterede i en fletningskonflikt;

  5. Vi løste derefter manuelt konflikten i filen README.md ved hjælp af Vim-editoren, committede de løste ændringer og pushed de endelige opdateringer til det eksterne repository.

question mark

Hvilken kommando indstiller Git til at bruge merge (ikke rebase) under git pull?

Vælg det korrekte svar

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Sektion 3. Kapitel 2
some-alt