Uppgift 1 - Kom igång med Git och GitHub
Med hjälp av denna uppgift kommer du få testa på grunderna vid arbete med Git och GitHub.
Viss terminalvana erfordras
Det är starkt rekommenderat att du löst uppgifterna i modulen Terminalen innan du påbörjar den här uppgiften.
Arbeta och lämna in individuellt
Denna uppgift skall du arbeta med, lösa och lämna in på egen hand individuellt. Om du kör fast får du gärna diskutera med andra i din basgrupp för att komma vidare men se till att du själv lär dig och förstår vad du gör.
Detta behöver du
För att lösa uppgiften kommer varje student att behöva:
- En webbläsare
- En terminal
- Programmet
git
- En texteditor
Uppgiften är testad på och går att utföra på Uppsala universitets Linuxsystem, men även på egen dator om det som krävs finns installerat.
Mål
Efter att du blivit godkänd på denna uppgift kommer du att känna till hur man använder Git för att:
- Skapa ett nytt lokalt repo
- Hanterar historiken för enskilda filer
Du kommer även lära dig att:
- Skapa ett publikt repo på GitHub
- Publicera ditt lokala repo på GitHub
Öppna en terminal
Öppna en terminal. Längst till vänster nere i terminalen ser du prompten, det kan se lite olika ut, till exempel så här:
beurling>
Där beurling>
utgör prompten. I fortsättning kommer $>
att användas för
att representera prompten i terminalen.
Vem är du?
Använd kommandot whoami
för att ta reda ditt användarnamn.
$> whoami
I terminalen bör du nu se ditt användarnamn på formen abcd1234
.
abcd1234
Notera att du kommer se något annat än abcd1234
, du kommer se ditt unika
användarnamn. I fortsättningen kommer dock abcd1234
att användas för att
representera ditt användarnamn.
Vart befinner du dig?
Använd kommandot pwd
för att ta reda på den absoluta sökvägen till den katalog
som du nu befinner dig i.
$> pwd
Resultatet ser troligen ut något liknande detta.
/home/abcd1234
Notera att ditt användarnamn utgör den sista delen i den absoluta sökvägen. I detta fall säger man att du står i din hemkatalog.
Skapa en ny katalog
Skapa katalogen abcd1234-git-test
med hjälp av kommandot mkdir
där du byter
ut abcd1234
mot ditt användarnamn.
$> mkdir abcd1234
Kontrollera att katalogen skapats
Utför kommandot ls
för att lista alla filer och mappar i den aktuella
katalogen.
$> ls
Resultatet kan se ut till exempel så här.
abcd1234-git-test public_html
Kontrollera att den nya mappen abcd1234-git-test
nu finns med i resultat från
ls
.
Gå in i den nya katalogen
Använd kommandot cd
för att gå in i den nya katalogen.
$> cd abcd1234-git-test
Kontrollera att den absoluta sökvägen ändrats.
$> pwd
Du bör nu se något liknande detta.
/home/abcd1234/abcd1234-git-test
Öppna en texteditor
Öppna en texteditor. På universitetets Linux-system kan du till exempel använda Gedit. Du hittar Gedit (3) från menyn Applications (1) under kategorin Accessories (2).
Skapa ny fil
Använd din texteditor för att skapa en fil med följande innehåll men där du
byter ut brown
mot namnet på din favoritfärg.
My favorite color is brown.
Spara filen med namn color.txt
.
Kontrollera att filen skapats
Kontrollera från terminalen att filen skapats. Först med kommandot ls
.
$> ls
Nu bör du se color.txt
i resultatet från ls
.
color.txt
Med kommandot cat
kan du skriva ut innehållet en fil till terminalen.
$> cat color.txt
Du bör nu se något liknande detta.
My favorite color is brown.
Initiera ett nytt Git-repo
Du har nu skapat en ny katalog som i sin tur innehåller en ny fil. För att kunna
spåra ändringar och kunna gå tillbaka till gamla versioner av filer är det nu
dags att göra katalogen abcd1234-git-test
till ett Git-repo.
Använd kommandot git init
i terminalen för att initiera ett nytt Git-repo.
$> git init
Om det funkar bör du se något liknande detta som resultat i terminalen.
Initialized empty Git repository in /home/abcd1234/abcd1234-git-test/.git/
Kontrollera status
Kontrollera status på ditt nya repo med hjälp av kommandot git status
.
$> git status
I terminalen bör du nu se något liknande detta.
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
color.txt
nothing added to commit but untracked files present (use "git add" to track)
Av detta status-meddelande framgår att du inte gjort några commits till repot ännu samt att det finns en fil som ännu inte spåras av git (untracked files).
Notera att filen color.txt
finns i katalogen abcd1234-git-test
men att du
ännu inte berättat för Git att denna fil skall spåras av Git. Filen finns alltså
i katalogen men än så länge spåras den inte av Git och är inte med i repot.
Spåra filen
För att berätta för Git att du vill att filen color.txt
skall spåras av Git
använder du kommandot git add
.
$> git add color.txt
Om det går bra skrivs inget ut till terminalen.
Kontrollera status
Kontrollera status på repot igen.
$> git status
I terminalen bör du nu se något liknande detta.
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: color.txt
Filen color.txt
spåras nu av Git.
Commit
Varje gång du vill spara en viss version av en fil måste du göra commit. Det är endast till dessa commits du kommer kunna gå tillbaka senare om du skulle ångra några ändringar.
I meddelandet från git status
ovan ser vi att filen color.txt
finns listad
under Changes to be committed
. När du gör en commit kommer alla filer som
listas under denna rubrik att tas med när du gör commit. Vid en commit måste du
även ange ett kort meddelande som beskriver vad du ändrat eller lagt till. För
att ange detta meddelande används flaggan -m
följt av meddelandet inom
citattecken "
och "
. `
$> git commit -m "I like brown"
Efter en lyckad commit bör du se något liknande följande i terminalen.
[master (root-commit) c7762ff] I like brown
Committer: Adam Andersson <abcd1234-test01@beurling.it.uu.se>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:
git config --global --edit
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 1 insertion(+)
create mode 100644 color.txt
Kolla i loggen
Alla commits loggas. Du kan kontrollera loggen med kommandot git log
.
$> git log
I terminalen bör du nu se något liknande detta.
commit c7762ffaa1d9cb6d32b0e33340542c63efc2fed0 (HEAD -> master)
Author: Adam Andersson <abcd1234-test01@beurling.it.uu.se>
Date: Fri Aug 20 17:42:20 2021 +0200
I like brown
Varje commit får ett unikt id, i detta fall
c7762ffaa1d9cb6d32b0e33340542c63efc2fed0
som står överst. I loggen framgår
även datum och tidpunkt för varje commit. Efter datumet ser du sedan meddelandet
(beskrivningen) som du angav när du gjorde commit, i detta fall I like brown
.
Ändra favoritfärg
Använd din texteditor för att ändra favoritfärg. I detta exempel ändrar vi i
filen color.txt
från
My favorite color is brown.
till
My favorite color is orange.
Glöm inte att spara filen.
Kontrollera status
Kontrollera status på repot igen.
$> git status
I terminalen bör du nu se något liknande detta.
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: color.txt
no changes added to commit (use "git add" and/or "git commit -a")
Git har nu upptäckt att du gjort en ändring i filen color.txt
sedan din senaste
commit.
Gör en ny commit
Varje gång du vill göra en commit måste du först berätta för Git att filen skall
tas med genom att lägga till den med git add
.
$> git add color.txt
Kontrollera status igen.
$> git status
Nu bör du se något liknande detta.
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: color.txt
Återigen finns filen color.txt
med under rubriken Changes to be committed
. Nu
kan du göra en commit av denna nya version.
git commit -m "I now like orange better"
Kolla loggen
Vi kollar loggen igen.
$> git log
I loggen ser vi nu båda våra commits.
commit dca4e654d3cf6ffdb9ab4ce0a76633332a101a55 (HEAD -> master)
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 18:03:44 2021 +0200
I now like orange better
commit c7762ffaa1d9cb6d32b0e33340542c63efc2fed0
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 17:42:20 2021 +0200
I like brown
Ändra favoritfärg
Använd din texteditor för att ändra favoritfärg en gång till. I detta exempel ändrar vi i
filen color.txt
från
My favorite color is orange.
till
My favorite color is blue.
Glöm inte att spara filen.
Kolla status
Kontrollera status igen.
$> git status
Nu bör du se något liknande detta.
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: color.txt
no changes added to commit (use "git add" and/or "git commit -a")
Git har återigen upptäckt att du ändrat filen color.txt
sedan din senaste
commit.
Se skillnad mellan senaste commit
Notera att vi ännu inte har gjort en commit på vår senaste ändring av color.txt
. Om vi vill
ändra oss igen men glömt bort vilken vår gamla favoritfärg var kan vi fråga Git
med kommandot git diff
.
$> git diff
Du bör nu se något likande detta.
diff --git a/color.txt b/color.txt
index 0fca394..01fa2ad 100644
--- a/color.txt
+++ b/color.txt
@@ -1 +1 @@
-My favorite color is orange.
+My favorite color is blue.
I detta fall används -
för att representera den senaste versionen som du gjort
commit på och +
den version du just nu arbetar på men ännu inte gjort commit
på. Här ser vi alltså att vi ändrat favoritfärg från orange
till red
. För
tillfället är det inte viktigt att vi sätter oss in i alla detaljer i
resultatet från git diff
. Det viktiga är att vi sett ett exempel på att Git
håller reda på historiken på commits vi gjort.
Återställ till din senaste commit
För att automatiskt återställa filen color.txt
till den version du commitat kan
vi använda kommandot git checkout
.
$> git checkout color.txt
Du bör nu se något liknande detta.
Updated 1 path from the index
Innehållet i filen color.txt
skall nu ha återställts. Öppna filen i din
texteditor för att kontrollera att innehållet återställs. Ett annat sätt att
kontrollera innehållet i en fil direkt från terminalen är med hjälp av kommandot
cat
.
$> cat color.txt
Innehållet i filen color.txt
skrivs nu ut i terminalen.
My favorite color is orange.
Kolla status
Kontrollera status igen.
$> git status
Nu bör du se något liknande detta.
On branch master
nothing to commit, working tree clean
Återställ till specifik version
Med hjälp av Git går det även att återställa till en specifik version. Vi börjar med att kolla i loggen.
$> git log
I loggen ser vi två commits med den senaste längst upp och den första längst ner.
commit dca4e654d3cf6ffdb9ab4ce0a76633332a101a55 (HEAD -> master)
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 18:03:44 2021 +0200
I now like orange better
commit c7762ffaa1d9cb6d32b0e33340542c63efc2fed0
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 17:42:20 2021 +0200
I like brown
Varje commit börjar med raden commit
och sedan följer ett långt hexadecimalt
tal. Dessa hexadecimala tal är respektive commits unika id. I detta fall ser vi
att vår första commit längst ner har id c7762ffaa1d9cb6d32b0e33340542c63efc2fed0
.
För att återställa till vår första version av filen color.txt
kan vi använda
detta id tillsammans med git checkout
.
$> git checkout c7762ffaa1d9cb6d32b0e33340542c63efc2fed0 color.txt
Om det går bra bör du nu se något liknande detta i terminalen.
Updated 1 path from f3d8575
Kolla om innehållet i color.txt
har återställts.
$> cat color.txt
Nu skall innehållet i den återställda filen skrivas ut i terminalen.
My favorite color is brown.
Kontrollera status
Kontrollera status igen.
$> git status
Nu bör du se något liknande detta.
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: color.txt
Notera att eftersom du återställt filen color.txt
så har den ändrats. Denna
ändring har upptäckts av Git precis som om du skulle ha uppdaterat filen
manuellt.
Gör en ny commit
Du har tillslut kommit fram till att brun är den bästa färgen. Innan du gör
commit måste du först lägga till filen men git add
.
$> git add color.txt
Nu kan du göra en commit.
git commit -m "Sorry brown, you and me forever"
För säkerhets skull kollar vi loggen också.
$> git log
Din nya commit skall nu finnas med överst i loggen.
commit 88606137bc39ffe8d4529dbc934172f95e70e754 (HEAD -> master)
Author: kamar535 <karl.marklund@it.uu.se>
Date: Fri Aug 20 19:40:34 2021 +0200
Sorry brown, you and me forever
commit dca4e654d3cf6ffdb9ab4ce0a76633332a101a55 (HEAD -> master)
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 18:03:44 2021 +0200
I now like orange better
commit c7762ffaa1d9cb6d32b0e33340542c63efc2fed0
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 17:42:20 2021 +0200
I like brown
Testa på egen hand
På egen hand skall du nu lägga till en fil till med namn food.txt
. I denna fil
skall du skriva något likande detta.
My favorite food is pizza.
Lägg till filen med git add
och gör en commit med till exempel git commit -m "I only eat pizza"
. Ändra din favoritmat några gånger och gör en ny commit för varje ändring.
När du är klar skall katalogen abcd1234-git-test
innehålla de två filerna
color.txt
och food.txt
. Testa att lista innehållet i ditt repo med kommandot
ls
.
$> ls
Resultatet skall se ut så här.
color.txt food.txt
Du kan även använda kommandot tree
för att lista innehållet i en katalog som
ett träd.
$> tree
Om du redan står i katalogen abcd1234-git-test
kommer resultatet att se ut så
här.
.
|-- color.txt
`-- food.txt
0 directories, 2 files
När du är klar skall Git-loggen se ut ungefär så här.
commit 594cdc385692762e68e4a9672d4fae2a78c37d92 (HEAD -> master)
Author: kamar535 <karl.marklund@it.uu.se>
Date: Fri Aug 20 19:49:08 2021 +0200
So sweet
commit 62e83492a0d72c1721ae519a0079e4c6a7b36411
Author: kamar535 <karl.marklund@it.uu.se>
Date: Fri Aug 20 19:47:27 2021 +0200
Waffles are better
commit 11ee6f0d222e2b3123762781e7e5e662ae6536f7
Author: kamar535 <karl.marklund@it.uu.se>
Date: Fri Aug 20 19:45:32 2021 +0200
Pizza is the best
commit 88606137bc39ffe8d4529dbc934172f95e70e754 (HEAD -> master)
Author: kamar535 <karl.marklund@it.uu.se>
Date: Fri Aug 20 19:40:34 2021 +0200
Sorry brown, you and me forever
commit dca4e654d3cf6ffdb9ab4ce0a76633332a101a55 (HEAD -> master)
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 18:03:44 2021 +0200
I now like orange better
commit c7762ffaa1d9cb6d32b0e33340542c63efc2fed0
Author: Adam Andersson <abcd1234@beurling.it.uu.se>
Date: Fri Aug 20 17:42:20 2021 +0200
I like brown
Skapa konto på GitHub
För att enkelt kunna samarbeta med andra behövs ett gemensamt repo online. GitHub erbjuder exakt detta. Innan du fortsätter behöver du skapa ett konto på GitHub om du inte redan har ett sådant. Det är gratis att skapa ett konto på GitHub och du kommer behöva ett sådant på kurser längre fram.
Skapa ett nytt repo på GitHub
När du loggat in på ditt konto på GitHub skall du nu skapa ett nytt repo på GitHub. I övre vänstra hörnet trycker du först på knappen New (1).
Nu skall du ge repot ett namn.
I fältet Repository name (2) skriver du abcd1234-git-test
där du ersätter
abcd1234
med användarnamnet på ditt studentkonto vid Uppsala universitet.
Kontrollera sedan att repot är publikt.
Kontrollera att repot är publikt (3).
Tryck sedan på Create repository (4). Nu skall du se något liknande detta.
Det vi för tillfället är intresserade av är alternativet …or push an existing repository from the command line. Kopiera de tre raderna med git-kommandon som listas här (5), vi kommer använda dem senare.
Personal access token
För att kunna pusha vårat lokala repository till vårat nya GitHub repo så kommer du att behöva skapa vad som kallas för ett personal access token. Detta kommer du använda istället för ditt lösenord när du vill logga in på GitHub via terminalen eller via API.
Steg 1
Klicka på din profil på GitHub och klicka sedan på settings.
Steg 2
Klicka på Developer settings.
Steg 3
Klicka sedan på Personal access tokens
Sedan på Generate new token.
Steg 4
Skriv “GitHub” i Note. Boka i repo fältet.
Klicka sedan på Generate token. Se till att spara ditt nya personal access token om du vill använda det igen, du kan inte få fram det på GitHub igen efter att du skapat det.
Steg 5
När du frågas om användarnamn och lösenord i terminalen så använder du sedan ditt GitHub användarnamn som användarnamn och ditt personal access token som lösenord.
Din personal access token kan exempelvis se ut såhär:
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
Pusha ditt lokala repo till GitHub
Nu kan du pusha ditt lokala repo till det publika repot på GitHub från terminalen. Klistra sedan in raderna du fick på GitHub efter att du skapat ditt repo.
git remote add origin https://github.com/YOUR-GITHUB-USERNAME/abcd1234-git-test.git
git branch -M main
git push -u origin main
Det är det första kommandot git remote add origin
som sätter upp repot på
GitHub som en remote för ditt lokala repo. Det tredje kommandot git push -u origin master
pushar sedan ditt lokala repo till repot du satt som upp som
remote, dvs pushar till repot på GitHub.
Tryck enter för att utföra kommandona ovan. I terminalen skall du nu se något liknande detta.
Enumerating objects: 16, done.
Counting objects: 100% (16/16), done.
Delta compression using up to 12 threads
Compressing objects: 100% (9/9), done.
Writing objects: 100% (16/16), 1.36 KiB | 1.36 MiB/s, done.
Total 16 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), done.
To https://github.com/kamar535/abcd1234-git-test.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
Ladda om webbsidan på GitHub. Det skall nu se ut ungefär så här.
Kika på filer på GitHub
Klicka på color.txt
(6).
Nu skall du se innehållet (7) i filen color.txt
.
Härifrån kan du klicka på History (8).
Nu får du se historiken för just den här filen.
Inlämning
Klicka på abcd1234-git-test
(9) överst på sidan för att komma tillbaka till
startsidan för repot.
Klicka sedan på Code (10).
Kopiera adressen till repot (11).
Lämna in den kopierade adressen till repot på angiven plats nedan.
Program | Inlämning |
---|---|
IT/KandDv | Studium |
Här hittar du mer information om hur du lämnar in uppgifter: