Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Synkronisera Arkiven | Mer Avancerade Arbetsflöden
Github-Grunder

Synkronisera Arkiven

Svep för att visa menyn

Som nämnts i föregående kapitel behöver vi synkronisera vår lokala gren med det fjärranslutna arkivet. För att göra detta bör vi köra kommandot git pull:

git pull
Försök till pull

När vi körde kommandot git pull hämtade Git uppdateringar men märkte att våra lokala och fjärranslutna grenar har avvikit, vilket innebär att det finns ändringar på båda grenarna som måste samordnas. Git kunde inte fortsätta eftersom det behöver veta hur dessa skillnader ska hanteras, så vi ställer in alternativet merge och kör kommandot git pull igen:

git config pull.rebase false
Note
Notering

Vi kommer att gå igenom rebase-operationen senare i denna kurs.

git pull
Sammanfogningskonflikt

Git försökte automatiskt slå samman de lokala och fjärrändringarna i README.md, men stötte på en sammanslagningskonflikt. Låt oss titta på commit-trädet, som visar var förgreningen och konflikterna har uppstått:

git log --graph --oneline --all
Commit-träd

Lösning av konflikten

Som du kan se delar vår nuvarande lokala commit och commiten i den fjärranslutna main-grenen en gemensam föregångare, men de har förgrenats, vilket leder till den sammanslagningskonflikt som vi behöver lösa. För att göra detta öppnar vi filen README.md i Vim-editorn:

vim README.md
Konflikter i Vim

För att lösa denna konflikt kan vi gå in i insert-läge genom att trycka på i, ta bort konfliktmarkeringarna och kombinera dessa ändringar på följande sätt:

Löst konflikt

Nästa steg är att trycka på Escape-tangenten, skriva :wq och trycka på Enter-tangenten för att spara ändringarna och avsluta Vim. För att slutföra sammanslagningen måste filen README.md läggas till i staging-området och sedan committas med respektive kommandon:

git add README.md
git commit
Note
Notera

Efter att ha kört kommandot git commit öppnas den förvalda textredigeraren (troligtvis Vim). Du kan antingen behålla det förvalda commit-meddelandet och avsluta Vim på samma sätt som vi just gjorde, eller redigera meddelandet och sedan avsluta.

Commit av sammanslagen fil

Slutligen kan vi säkert köra kommandot git push och verifiera att trevägs-sammanslagningen lyckades genom att visa commit-trädet:

git log --graph --oneline --all
Commit-träd

Sammanfattning av vad vi gjorde i dessa två kapitel:

  1. Simulerad samarbete genom att göra ändringar både lokalt och fjärr i filen README.md;

  2. Först genomfördes en ändring direkt i fjärr-repositoriet, därefter gjordes en annan ändring lokalt;

  3. När vi försökte pusha våra lokala ändringar uppstod en konflikt eftersom fjärr-repositoriet hade nya uppdateringar;

  4. För att lösa detta hämtade vi ändringarna från fjärr-repositoriet, vilket ledde till en sammanslagningskonflikt;

  5. Konflikten löstes manuellt i filen README.md med hjälp av Vim-redigeraren, de lösta ändringarna committades och de slutliga uppdateringarna pushades till fjärr-repositoriet.

question mark

Vilket kommando ställer in Git att använda merge (inte rebase) under git pull?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 3. Kapitel 2

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 3. Kapitel 2
some-alt