Kursinnhold
GitHub-Grunnleggende
GitHub-Grunnleggende
Synkronisering av Depotene
Som nevnt i forrige kapittel, må vi synkronisere vår lokale gren med det eksterne depotet. For å gjøre dette, bør vi kjøre kommandoen git pull
:
Da vi kjørte kommandoen git pull
, hentet Git oppdateringer, men oppdaget at våre lokale og eksterne grener har divergerte, noe som betyr at det finnes endringer på begge grener som må forenes. Git kunne ikke fortsette fordi den må vite hvordan disse forskjellene skal håndteres, så vi setter merge-alternativet og kjører git pull
-kommandoen igjen:
Vi vil gå gjennom rebase-operasjonen senere i dette kurset.
Git forsøkte å automatisk flette de lokale og eksterne endringene i README.md
, men støtte på en flettekonflikt. La oss se på commit-treet, som viser hvor avviket og konfliktene har oppstått:
Løse konflikten
Som du ser, deler vår nåværende lokale commit og commiten i den eksterne main
-grenen en felles stamfar, men de har forgreinet seg, noe som fører til flettekonflikten vi må løse. For å gjøre dette åpner vi README.md
-filen i Vim-editoren:
For å løse denne konflikten kan vi gå inn i innsettingsmodus ved å trykke i
, fjerne konfliktmarkørene og kombinere endringene på følgende måte:
Deretter bør du trykke på Escape-tasten, skrive :wq
, og trykke på Enter-tasten for å lagre endringene og avslutte Vim. Nå må README.md
-filen legges til i staging-området og deretter committes ved å bruke de respektive kommandoene:
Etter å ha kjørt git commit
-kommandoen, vil standard tekstredigerer åpnes (mest sannsynlig Vim). Du kan enten beholde standard commit-melding og avslutte Vim på samme måte som vi nettopp gjorde, eller du kan redigere meldingen og deretter avslutte.
Til slutt kan vi trygt kjøre git push
-kommandoen og verifisere at three-way merge var vellykket ved å vise commit-treet:
La oss oppsummere hva vi gjorde i disse to kapitlene:
Vi simulerte samarbeid ved å gjøre endringer både lokalt og eksternt i
README.md
-filen;Vi gjorde først en endring direkte i det eksterne depotet, deretter en annen endring lokalt;
Da vi forsøkte å pushe våre lokale endringer, støtte vi på en konflikt fordi det eksterne depotet hadde nye oppdateringer;
For å løse dette hentet vi endringene fra det eksterne depotet, noe som førte til en flettingskonflikt;
Vi løste deretter konflikten manuelt i
README.md
-filen ved hjelp av Vim-editoren, committet de løste endringene, og pushet de endelige oppdateringene til det eksterne depotet.
Takk for tilbakemeldingene dine!