Kursusindhold
Github-Grundlæggende
Github-Grundlæggende
Synkronisering af Arkiverne
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
:
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 forenes. Git kunne ikke fortsætte, fordi det skal vide, hvordan disse forskelle skal håndteres, så lad os vælge merge-muligheden og køre kommandoen git pull
igen:
Vi gennemgår rebase-operationen senere i dette kursus.
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:
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:
For at løse denne konflikt kan vi gå i insert mode ved at trykke på i
, fjerne konfliktmarkørerne og kombinere ændringerne på følgende måde:
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 README.md
-filen nu tilføjes til staging-området og derefter committes ved hjælp af de respektive kommandoer:
Efter at have kørt git commit
-kommandoen åbnes standard teksteditoren (sandsynligvis 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.
Til sidst kan vi trygt køre git push
-kommandoen og verificere, at three-way merge blev gennemført ved at vise commit-træet:
Lad os gennemgå, hvad vi gjorde i disse to kapitler:
Vi simulerede samarbejde ved at foretage ændringer både lokalt og fjern i filen
README.md
;Vi lavede først en ændring direkte i fjernlageret, og derefter lavede vi en anden ændring lokalt;
Da vi forsøgte at uploade vores lokale ændringer, stødte vi på en konflikt, fordi fjernlageret havde nye opdateringer;
For at løse dette hentede vi ændringerne fra fjernlageret, hvilket resulterede i en sammenfletningskonflikt;
Vi løste derefter manuelt konflikten i filen
README.md
ved hjælp af Vim-editoren, committede de løste ændringer og uploadede de endelige opdateringer til fjernlageret.
Tak for dine kommentarer!