Idag så gottade vi ner oss i versionshantering av källkod med hjälp av DVCS:et (Distributed Version Control System) GIT.
Vi körde en del grundläggande terminal-kommandon för att interagera med ett git-repository, och nedan följer en sammanställning över kommandona med en tillhörande kort beskrivning.
För mer detaljer så kika på några av länkarna längst ner.
Några av fördelarna med att versionshantera vår kodbas:
- Kan backa till vilken tidigare revision som helst.
- Kan jobba på olika versioner av vår kod fristående, utan att det påverkar resten av koden.
- Kan samarbeta med andra utvecklare.
Ett repository kan befinna sig i ett av tre states:
- Modified (”dirty”)
- Staged
- Committed (”clean”)
Grundläggande kommandon
git init
Skapar ett nytt, tomt repository. Går att göra i en mapp med befintliga filer!
Skapar egentligen bara en .git mapp. Lägger inte till några filer!
git status
Visar status om det repository vi är i, t.ex. vilken branch vi är i, om vårt working tree är clean eller dirty, om det finns ändringar i filer som inte är med i vårt repo (untracked) och om det finns ändringar som inte är staged.
git add <file>
Stage:ar en fil för att bli en del av en commit.
Kan även adda alla förändringar med git add ..
git reset HEAD <file>
Tar bort en fil från att vara staged.
git rm –cached <file>
Ta bort en fil från att spåras av git. (OBS! --cached).
git commit -m ”<mitt commit-meddelande>”
Commit:ar alla stage:ade ändringar och anger meddelandet som beskrivning av commit:en.
git log
Visa logg över alla commits/ändringar.
Kan även skriva git log --oneline för att få en förkortad version av loggen med en commit per rad.
Ångra saker
Checkout commit
Säker, ändrar inget i historiken eller tar bort något.
Bara kika på en gammal tidpunkt. Read-only.
git checkout <hash> – ta ut snapshot
git checkout master – återgå till HEAD på master
Revert commit
Ångrar en commit men håller kvar historiken. Allt den lade till tags bort och allt den tog bort läggs till.
git revert <hash>
Om vim startar så skriv :wq för att avsluta och fortsätta.
Reset commit
Ändrar historiken, tar bort commit och allt som hänt efter den (så det inte finns ett spår av att de ens hänt). Farlig!
git reset <hash> – tar bort commits MEN ändringar är kvar
git reset --hard <hash> – tar bort commits OCH ändringar
Kopiera en fil/mapp. Står för copy.
Branching
Skapa en separat ”tidslinje”. Används för att jobba på kod utan att ”förstöra” den kod som finns i master.
git branch <name>
Skapar en ny branch men check:ar inte ut den!
git checkout <name>
Checkar ut (byter till) en branch (som måste finnas sedan innan).
git checkout -b <name>
Skapar en ny branch och checkar ut (byter till) branchen.
Och säkert några till jag glömt =).
Länkar
Git & GitHub Tutorial for Beginners (The Net Ninja)
Git Basics – Getting Git Right (Atlassian)
Learn the Basics of Git in Under 10 Minutes
https://www.freecodecamp.org/news/learn-the-basics-of-git-in-under-10-minutes-da548267cc91/
git – the simple guide
https://rogerdudler.github.io/git-guide/
Workshop
Skapa ett repo, gör lite commits, skapa en eller flera branches, gör commits i dem och sen merge:a in dem i master.
Skapa ett konto på GitHub.com och därefter ett nytt repository. Ta koden för ”import existing local repository” och kör i din terminal. Se till att dina commits kommer upp.
Testa gör några commits till och push:a upp dem.
Skicka mig länken (på Teams) till ditt GitHub-repository.