Course-upstream uusien ohjeiden vetämistä (pull) varten

Lisää course-upstream Git-etärepositorioksi (tarpeen vain niille, jotka jatkavat Assignmentin parissa)

course-upstream:ia käytetään Assignmentin ohjeiden ja mahdollisten päivitysten jakamiseen. WSD-kurssin henkilökunta jakaa tarvittavat tiedostot opiskelijoille upstreamin (eli 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 ryhmärepositoriosta, sinun tulee lisätä group_template_project etärepositorioksi (remote) oman ryhmäsi Git-repositorioon. Tämän jälkeen voit pull-komennon avulla vetää muutokset omaan repositorioosi.

Kurssin ryhmärepositorion osoite: git@course-gitlab.tuni.fi:compcs200-spring2025/group_template_project.git

Tätä kurssin ryhmärepositoriota 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-spring2025/group_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, ja yhdistäminen voidaan tehdä siitä huolimatta.

Jos yhdistäminen vielä epäonnistuisi esim. (merge failure) konfliktien (conflicts) takia:

Automatic merge failed; fix conflicts and then commit the result.

..voit ratkaista konfliktit:

  1. Avaa unmerged tiedostot: Avaa jokainen yhdistämätön (unmerged) tiedosto tekstieditorissa.
  2. 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.
  3. Lisää muutokset git stagingiin: Kun olet ratkaissut jokaisen konfliktin tiedostossa, laita tiedosto git:n stageen suorittamalla komento
    git add ~filename~
  4. Tee commit muutoksista: Kun olet ratkaissut kaikki konfliktit, suorita komento:
    git commit -m "Merge changes from course-upstream" -a
    tehdäksesi commitin muutoksista.

Huomaathan, että

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.

Palautusta lähetetään...