Uppgift 2 - Samarbete och branches

I den här uppgiften bygger vi vidare på det du lärt dig i uppgiften Kom igång med git och GitHub. Du skall nu få pröva på att använda Git och GitHub för att samarbeta med andra kring ett gemensamt projekt bestående av samling av filer.

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.

Arbeta i par inom basgruppen

Denna uppgift skall göras i par om två studenter inom basgruppen. Är ni ett udda antal i basgruppen kommer några behöva arbeta tre stycken tillsammans i en trippel med denna uppgift.

Ni kommer arbeta tillsammans och hjälpas åt men endast en av er kommer behöva lämna in den här uppgiften i Studium.

Mål

Efter att paret/trippeln blivit godkända på denna uppgift kommer ni att känna till hur ni använder Git för att:

  • Samarbeta med andra kring samma projekt
  • Skapa nya grenar (branches)
  • Hantera merge-konflikter.

Person A, B och C

För att hålla reda på vem som skall göra vad kommer följande beteckningar att användas.

Person A
En person skall skapa ett repo på GitHub. Vi kommer kalla denna person för A.
Person B
Den andra personen i paret kommer att kallas för person B.
Person C
Om ni är en trippel kommer den tredje personen att kallas person C.

Skapa ett nytt repo (A)

Person A skapar ett nytt publikt repo på GitHub och döper det till abcd1234-abcd1234-git-collaboration om ni är ett par eller abcd1234-abcd1234-abcd1234-git-collaboration om ni är är en trippel, där ni ersätter abcd1234 med era användarnamn vid Uppsala universitet.

Bjud in andra deltagare (A)

Person A bjuder in person B (och person C om det finns en tredje) till repot.

Person B (och person C) behöver acceptera inbjudan genom att logga in på sitt mejl.

Skicka repo-länken (A)

Person A skickar repo-länken till övriga (B och C) via Studium som meddelande.

Klona repot (alla)

När ni alla har tillgång till repo-länken kan ni navigera till er hemkatalog och klona repot med kommandot git clone följt av er länk. Exempelvis:

$> git clone https://github.com/KianRafi1/abcd1234_abcd1234-git-collaboration.git

Skapa filen members.txt (A)

Person A skapar och lägger till filen members.txt till sitt lokala repo med git add. I denna fil lägger sedan person A till följande information om sig själv.

  • Användarnamn på GitHub.
  • Namn.
  • Epost-adress vid Uppsala universitet.

Det skall se ut ungefär så här.

Användare på GitHub: ArneAnka
Namn: Arne Andersson
Epost: arne.andersson.1234@student.uu.se

Person A gör git commit på filen members.txt med ett lämpligt commit meddelande. Sedan gör person A git push till repot på GitHub.

Tips: Om någon skulle få ett felmeddelande när de kör git push se till att hen använder ett personal access token och inte sitt lösenord. Instruktioner för hur man skapar dessa finns på denna länk: Uppgift 1 - Personal access token.

Lägg till person B till members.txt (B)

Person B gör git pull för att få den senaste uppdateringen från person A. Person B lägger sedan på egen hand till sina användarnamn, för- och efternamn och epost-adresser till members.txt. Gör commit och pushar upp till repot på GitHub.

Lägg till person C till members.txt (C)

Om ni är tre som arbetar tillsammans gör sedan person C git pull, lägger till sin information i filen members.txt, commitar och pushar upp till repot på GitHub.

Är ni i synk? (alla)

Alla gör nu en git pull för att se om det finns uppdateringar att hämta från repot på GitHub. Om ni är tre stycken skall innehållet i filen members.txt nu se ut ungefär så här i allas lokala repos.

Användare på GitHub: ArneAnka
Namn: Arne Andersson
Epost: arne.andersson.1234@student.uu.se

Användare på GitHub: brittan
Namn: Britta Bengtsson
Epost: britta.bengtsson.1234@student.uu.se

Användare på GitHub: Carro99
Namn: Carolina Collberg
Epost: carolina.collberg.1234@student.uu.se

Skapa filen myList.txt (A)

Person A skapar filen myList.txt och klistra in följande:

1. First

Publicera på GitHub (A)

Spara ändringarna med git add och committa med kommandot git commit och meddelandet First - added.

Publicera detta sedan på GitHub med kommandot git push.

Git pull (B)

Person B hämtar den nya versionen av repot från GitHub med kommandot git pull.

Person B kollar nu status för sitt lokala repo.

$> git status

Du bör nu se följande status.

On branch main

alternativt

On branch master

Skapa en ny branch (B)

Person B skall nu skapa en ny branch med kommandot git checkout -b följt av den nya branchens namn, till exempel så här.

$> git checkout -b nyBranch

I terminalen bör du se något liknande detta.

Switched to a new branch 'nyBranch'

Använd kommandot git branch för att kontrollera vilken branch du är på.

$> git branch

I resultatet skall den nya branchen vara markerad med * vilket betyder att ni är på denna branch.

  main
* nyBranch

alternativt

  master
* nyBranch

Ändra myList.txt (B)

Öppna textfilen myList.txt och klistra in följande för att ersätta förra texten:

1. First
2. Second

Committ (B)

Spara ändringen med git add och gör git commit -m "Second - added".

Byt branch (B)

Byt tillbaka till main branchen med kommandot git checkout main. Ni bör då se följande:

Switched to branch 'main'

alternativt

Switched to branch 'master'

Kontrollera sedan vad som står i myList.txt i main branchen med kommandot cat.

Du bör se följande i myList.txt på main branchen:

1. First

Ändra myList.txt igen (B)

Se till att du är på main branchen och ändra myList.txt genom att lägga till i andra raden följande text:

2. Third

Så att det ser ut på följande sätt:

1. First
2. Third

Spara sedan detta och commita med meddelandet "Third - added".

Merge (B)

Använd dig av kommandot git merge följt av er branch namn. Ni bör se följande:

Auto-merging myList.txt
CONFLICT (content): Merge conflict in myList.txt
Automatic merge failed; fix conflicts and then commit the result.

Fixa merge konflikt (B)

Printa ut innehållet i myList.txt med kommandot cat. Ser ni något liknande detta?

1. First
<<<<<<< HEAD
2. Third
=======
2. Second
>>>>>>> nyBranch

Ni ska få den att se ut på följande sätt:

1. First
2. Third
3. Second

Notera att 2. byts ut till 3. på tredje raden.

Publicera detta på GitHub (B)

Slutligen kan den som fixat merge konflikten spara (git add), committa med meddelandet "Fixat merge konflikt" (git commit) samt publicera detta på GitHub med kommandot git push.

Extra steg om ni är tre

Om ni är tre som arbetar tillsammans följer nu några extra steg som bara skall utföras av denna tredje person C. Om ni är två personer som arbetar hoppar ni direkt vidare till inlämning längst ner på denna sida.

Git pull (C)

Person C hämtar den senaste versionen av repot med kommandot git pull.

Person C kan kontrollera status med git status

$> git status

Du bör nu se följande status.

On branch main

Ändra myList.txt (C)

Lägg till i myList.txt en fjärde punkt så att det ser ut som följande:

1. First
2. Third
3. Second
4. Fourth

Glöm inte att committa ändringen och pusha till repot på GitHub.

Inlämning

En av er kan kopiera adressen till repot ni skapat på GitHub och lämna in adressen på angiven plats nedan.

ProgramInlämning
IT/KandDvStudium

Här hittar du mer information om hur du lämnar in uppgifter: