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
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
Vi kommer att gå igenom rebase-operationen senare i denna kurs.
git pull
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
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
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:
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
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.
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
Sammanfattning av vad vi gjorde i dessa två kapitel:
-
Simulerad samarbete genom att göra ändringar både lokalt och fjärr i filen
README.md; -
Först genomfördes en ändring direkt i fjärr-repositoriet, därefter gjordes en annan ändring lokalt;
-
När vi försökte pusha våra lokala ändringar uppstod en konflikt eftersom fjärr-repositoriet hade nya uppdateringar;
-
För att lösa detta hämtade vi ändringarna från fjärr-repositoriet, vilket ledde till en sammanslagningskonflikt;
-
Konflikten löstes manuellt i filen
README.mdmed hjälp av Vim-redigeraren, de lösta ändringarna committades och de slutliga uppdateringarna pushades till fjärr-repositoriet.
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal