TESTING AREA for teachers - real service at plus.tuni.fi
- COMP.CS.200
- 2. HTML: media ja formit
- 2.7 Course-upstream uusien ohjeiden vetämistä (pull) varten
Course-upstream uusien ohjeiden vetämistä (pull) varten¶
course-upstream:ia käytetään Assignmentin ohjeiden ja mahdollisten päivitysten jakamiseen. WSD-kurssin henkilökunta jakaa tarvittavat tiedostot opiskelijoille upstreamin (eli student_template_projectin tai group_template_projectin) kautta. Kun järjestelmä on asetettu käyttöön, opiskelijoiden tarvitsee vain vetää (pull) päivitykset.
Sinulla on Git-repositorio osoitteessa course-gitlab.tuni.fi. Aluksi Git-repositoriossa on vain ne tiedostot, jotka olivat siellä kloonaushetkellä. Myöhemmin siihen sisältyvät myös mahdollisesti itse lisäämäsi tiedostot.
Saadaksesi päivitykset, uudet testit ja muutokset kurssin upstream-repositoriosta, sinun tulee lisätä student_template_project etärepositorioksi (remote) oman ryhmäsi Git-repositorioon. Tämän jälkeen voit pull-komennon avulla vetää muutokset omaan repositorioosi.
Kurssin repon osoite on: git@course-gitlab.tuni.fi:compcs200-spring2026/student_template_project.git
Tätä repoa kutsutaan jatkossa nimellä course-upstream ja tähän repositorioon kurssin henkilökunta tekee esimerkiksi testien mahdolliset päivitykset ja josta opiskelijat voivat hakea (pull) päivityksiä omiin repositorioihinsa.
Kun olet onnistuneesti kloonannut oman repositoriosi omalle koneellesi ja tehnyt siihen liittyvän harjoituksen, voit lisätä course-upstream:n paikallisiin etärepositorioihin (local remotes) seuraavasti:
Anna seuraava komento repositoriossasi:
git remote add course-upstream git@course-gitlab.tuni.fi:compcs200_spring2026/student_template_project.git
Tämän jälkeen voit tarkastella etärepositorioitasi (remote) seuraavalla komennolla:
git remote -v
ja voit vetää pull course-upstream:sta
git pull course-upstream main
Komento käy hakemassa viimeisimmät muutokset course-upstream:istä ja yhdistää ne paikalliseen main-haaraan. Sinulta kysytään yhdistämisen yhteydessä commit-viestiä, mutta todennäköisimmin oletusviestiä ei tarvitse muuttaa.
Tässä vaiheessa voit saada myös seuraavan virheviestin:
fatal: Need to specify how to reconcile divergent branches.
Gitiä on ohjeistettava toimimaan toivotulla tavalla tilanteessa, jossa muutoksia vedetään ulkoisesta repositoriosta paikalliseen. Erityisesti täytyy määritellä mitä halutaan, jos sekä ulkoisessa että paikallisessa repositoriossa on tapahtunut muutoksia.
Seuraavan komennon avulla asetat pull.rebasen epätodeksi, jolloin git historia pysyy puhtaampana ja lineaarisena, ja vain lokaalit commit-viestit huomioidaan:
git config pull.rebase false
Jos yhdistäminen ei vieläkään onnistu virheilmoituksen vuoksi:
fatal: refusing to merge unrelated histories
lisää siinä tapauksessa vaihtoehto:
git pull course-upstream main --allow-unrelated-histories
allow-unrelated-histories ilmaisee, ettei yhteisen kannan (base) puuttuminen haittaa, vaan yhdistäminen voidaan tehdä siitä huolimatta.
Jos yhdistäminen vielä epäonnistuisi esim. merge-konfliktien takia:
Automatic merge failed; fix conflicts and then commit the result.
..sinun täytyy ensiksi ratkaista konfliktit:
- Avaa unmerged tiedostot: Avaa jokainen unmerged-tiedosto tekstieditorissa.
- Paikanna ja ratkaise konfliktit: Etsi konfliktimerkkejä (<<<<<<<, =======, and >>>>>>>). Merkkien <<<<<<< ja ======= välissä ovat sinun muutokset, ja merkkien ======= ja >>>>>>> välissä ovat mergeämisestä tulevat konfliktit. Päätä, mitkä muutokset säilytetään, muokkaa tiedostoa sen mukaisesti ja poista konfliktimerkit.
-
Lisää muutokset git stagingiin:
Kun olet ratkaissut jokaisen konfliktin tiedostossa, laita tiedosto git:n stageen suorittamalla komento
git add ~filename~ -
Tee commit muutoksista:
Kun olet ratkaissut kaikki konfliktit, suorita komento:
tehdäksesi commitin muutoksista.git commit -m "Merge changes from course-upstream" -aHuom! Merge-konflikteja syntyy usein vasta ryhmätyöskentelyn aikana, kun on useampi henkilö, joka editoi samoja fileja
Huomaathan, että pelkkä:
git pull
vetää edelleen omasta repositoriostasi osoitteesta course-gitlab.tuni.fi, EI course-upstream:sta.
Git-repojen työnkulku on seuraava:
- Kurssin henkilökunta lisää materiaalia: course-upstream
- Opiskelijat saavat ilmoituksen Teamsissa ja Plussan uutisissa
- Opiskelijat vetävät (pull) course-upstream:ista, jotta heidän repositoriansa päivittyvät sisältämään uusimmat muutokset
A+ esittää tässä kohdassa tehtävän palautuslomakkeen.