Git guide

Pentru a vă ușura munca în cadrul laboratoarelor de IRVA, vă recomandăm să lucrați cu Git & GitHub.

Laboratoarele de AR și VR for avea un repository pe GitHub - întrucât este posibil ca repo-urile să mai primească actualizări pe parcursul semestrului, ar fi ideal să urmați pașii descriși în acest ghid pentru a nu fi nevoie să vă clonați / descărcați de multiple ori proiectul.

Link către Git repo

Înainte de toate, asigurați-vă că aveți Git instalat, acesta se poate descărca de aici.

  • În cazul instalării pe Windows
    • Asigurați-vă ca aveți bifat “Add Git to PATH”
    • Setările implicite ale install wizard-ului ar trebui să fie OK în rest

De asemenea, asigurați-vă că aveți un cont de GitHub creat.

Nu uitați să vă instalați și Git LFS.

Setup repo local (fork)

Procedura recomandată pentru a putea lucra într-un singur repo clonat pe sistemul vostru este următoarea:

  • Realizați un fork al repo-ului original / referință
  • clonați fork-ul, pe care puteți apoi lucra pentru a rezolva laboratoarele
  • În cazul unor actualizări pe repo-ul original (de ex. actualizăm noi repo-ul pentru un laborator nou), voi vă trageți (pull) aceste modificări în fork și în același timp mențineți modificările voastre

În continuare vă prezentăm procedura pentru a face setup-ul necesar.

1. Fork repo original

De pe web page-ul repo-ului original (de pe GitHub), creați un Fork (aveți un buton special pentru acesta). Fork-ul va crea de fapt o copie a repo-ului original pe contul vostru.

2. Clone fork

Repo-ul forked, cel de pe contul vostru, va trebui să-l clonați pe mașina voastră locală. Navigați la o locație preferată în sistemul vostru de fișiere, din Windows puteți face acolo click-dreapta, Properties > Git Bash here pentru a deschida linia de comandă.

De pe repo-ul forked copiați link-ul către repo (butonul verde Code).

În Git Bash, rulați comanda:

git clone https://github.com/UPB-Graphics/IRVA.git

  • Puteți să clonați via SSH git@github.com:UPB-Graphics/IRVA.git

3. Adăugare upstream către repo-ul original

Acest pas este necesar pentru a putea primi actualizări în fork-ul vostru. Pentru a urmări repo-ul original, rulați urmatoarea comanda Git:

git remote add upstream https://github.com/UPB-Graphics/IRVA.git
4. Cum pot lucra pe fork și să aplic schimbările mele (local)?

Puteți lucra în mod obișnuit pe repo-ul forked (local). În cazul în care doriți să-l actualizați, de exemplu în urma rezolvării unui laborator, faceți referire la următorii pași.

Pentru a face staging - anume, pentru a specifica fișierele pe care dorim să le supunem unui commit:

git add .

git add . pune toate schimbarile în staging area. Ideal, vă recomandăm să verificați în prealabil ce fișiere vor fi incluse în staging area

Așadar, o comanda foarte utilă pentru a vedea starea curentă este:

git status

În continuare, după staging, trebuie să faceți commit, care aplică modificările local:

git commit -m "Message here"

În final, pentru a actualiza schimbările pe remote, trebuie să faceți push:

git push
5. Cum actualizez fork-ul pe baza repo-ului original?

Înainte de a rula acești pași asigurați-vă că nu aveți fișiere untracked pe repo-ul forked! Daca rulați comanda git status si aveți fișiere marcate cu roșu (untracked), faceți poți pașii de la 4, dacă aveți fișiere marcate cu verde (staged), faceți pașii de la 4 fără staging (commit, push)

Pentru a vizualiza eventuale schimbări în repo-ul original, rulați comanda:

git fetch upstream

Pentru a aplica modificările, rulați:

Fie comanda

git merge upstream/main

Fie comanda

git pull upstream main

În esență, pull face fetch și merge într-o singură acțiune, așadar cea mai rapida variantă este să rulați direct:

git pull upstream main

După acest pas se va deschide în bash un fișier în modul de editare al merge-ului.

Pentru a ieși din acest mod rulați :q.

Dacă acum rulați comanda git status ar trebui să primiți un mesaj care vă informează că varianta voastra locală este în urmă. Pentru a aplica modificările, rulați:

git push

În final, puteți vedea istoricul de commit-uri folosind comanda:

git log --oneline

În mod alternativ, există tool-uri vizuale ce vă ajută să studiați aceast istoric, noi recomandăm:

  • GitKraken
  • JetBrains Rider

Merge conflicts 🥲

Este posbil ca dupa un update de pe repo-ul upstream să existe merge conflicts. Vom încerca pe cât posibil să nu modificăm fișiere deja existente. Necunoscând de pe acum natura acestor conflicte, nu vă putem da o singură soluție pentru ele, aici va trebui să discutați cu asistenul de laborator, sau cereți ajutor colegilor / urmăriți un ghid online.

Backup

Ca pentru orice informație digitală, chiar dacă totul merge smooth, vă recomandăm totuși să faceți backup-uri!

irva/resurse/gitguide.txt · Last modified: 2024/10/21 23:16 by andrei.lapusteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0