Git-situation
Att återställa en felaktig lansering
Ibland händer det att en bugg lanseras och att det orsakar så stora problem att man måste återställa lanseringen till hur det såg ut innan.
I den här övningen kommer vi att börja med en situation där vi har en lokal repo där vi gör våra ändringar och även en "gitlab"-repo som kommer att simulera live-versionen på servern.
Ladda ner den här filen och packa upp den någon stans lokalt på din dator.
Ladda ner Git-repo <--- Funkar ej ännu.
Öppna terminalen och gå till mappen.
Du kommer nu se två mappar: local och gitlab
Vi kommer bara att arbeta ifrån local så gå in i den mappen.
Om du skriver ls så ser du kundens webshop.
Och om du går till webbläsarens addressfält och skriver in sökvägen till customer_webshop.html, t.ex:
file:///home/path/unwanted_release/local/customer_webshop.html
och
file:///home/path/unwanted_release/gitlab/customer_webshop.html
Så kan du se hur webshoppen ser ut lokalt i din utvecklingsmiljö (local) samt på servern (gitlab).
Gå till branchen dev_branch.
Öppna local/customer_webshop.html i din editor och gör en ändring som gör att ingenting fungerar. Det kommer att simulera buggen vi ska återställa senare.
Gör en commit med filen (git add -A; git commit -m "Stor bugg"
)
Om du kollar i din utvecklingsmiljö så kommer nu ingenting att fungera:
file:///home/path/unwanted_release/local/customer_webshop.html
Merga in branchen i master (git checkout master; git merge master dev_branch
)
Pusha till master (git push origin master
)
Om du kollar webbshoppen på master så kommer ingenting att fungera där heller:
file:///home/path/unwanted_release/gitlab/customer_webshop.html
Om det här hade varit en skarp situation så kommer en av våra kunders webbshoppar att ha slutat fungera.
Så nu är det din uppgift att lösa det här.
Det finns ett par olika sätt att lösa det här på. Testa gärna på egen hand innan du kollar på lösningarna. Om du vill börja om så kan du alltid bara ta bort git-situationen du laddade ner och lägga till den på nytt.
Lösning #1
Resetta lokalt och pusha upp en tidigare commit.
Checka ut master i local.
Skriv git log
och hitta hashen till den commit du vill återställa till.
Skriv git reset --hard [hashen]
Alternativtgit reset HEAD~1
för att återställa en commit tillbaka från sista commiten i branchen.
Skriv nu git push -f origin master
för att få ändringarna till servern också.
Lösning #2
Git revert för att skapa en ny commit som ångrar dina felaktiga ändringar.
Checka ut master i local.
Skriv git log
och hitta hashen till den felaktiga commiten.
Skriv git revert [hashen]
Om du skriver git log
så kan du se att det har skapats en ny commit som tar bort ändringarna i den felaktiga commiten innan. Skriv git diff HEAD~1
för att se ändringen som har tagits bort.
Skriv nu git push origin master
för att få ändringarna till servern också.
Lösning #3 (Behöver feedback. Tror det funkar så här)
Git revert på gitlab
Klicka på knappen "Revert" inne i Merge requesten.
Nu kommer det ha skapats en ny commit som ångrar dina felaktiga ändringar.
Gå nu till master i local och skriv git pull
.