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.
$> whoamiI terminalen bör du nu se ditt användarnamn på formen abcd1234.
abcd1234Notera 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.
$> pwdResultatet ser troligen ut något liknande detta.
/home/abcd1234Notera 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 abcd1234Kontrollera att katalogen skapats
Utför kommandot ls för att lista alla filer och mappar i den aktuella
katalogen.
$> lsResultatet kan se ut till exempel så här.
abcd1234-git-test public_htmlKontrollera 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-testKontrollera att den absoluta sökvägen ändrats.
$> pwdDu 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.
$> lsNu bör du se color.txt i resultatet från ls.
color.txtMed kommandot cat kan du skriva ut innehållet en fil till terminalen.
$> cat color.txtDu 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 initOm 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 statusI 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.txtOm det går bra skrivs inget ut till terminalen.
Kontrollera status
Kontrollera status på repot igen.
$> git statusI 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.txtFilen 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.txtKolla i loggen
Alla commits loggas. Du kan kontrollera loggen med kommandot git log.
$> git logI 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 brownVarje 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 statusI 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.txtKontrollera status igen.
$> git statusNu 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 logI 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 statusNu 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 diffDu 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.txtDu bör nu se något liknande detta.
Updated 1 path from the indexInnehå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.txtInnehållet i filen color.txt skrivs nu ut i terminalen.
My favorite color is orange.Kolla status
Kontrollera status igen.
$> git statusNu 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 logI 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 brownVarje 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.txtOm det går bra bör du nu se något liknande detta i terminalen.
Updated 1 path from f3d8575Kolla om innehållet i color.txt har återställts.
$> cat color.txtNu skall innehållet i den återställda filen skrivas ut i terminalen.
My favorite color is brown.Kontrollera status
Kontrollera status igen.
$> git statusNu bör du se något liknande detta.
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: color.txtNotera 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.txtNu 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 logDin 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 brownTesta 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.
$> lsResultatet skall se ut så här.
color.txt food.txtDu kan även använda kommandot tree för att lista innehållet i en katalog som
ett träd.
$> treeOm du redan står i katalogen abcd1234-git-test kommer resultatet att se ut så
här.
.
|-- color.txt
`-- food.txt
0 directories, 2 filesNä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 brownSkapa 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 mainDet ä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:
















