Differences

This shows you the differences between two versions of the page.

Link to this comparison view

irva:resurse:gitguide [2024/10/07 12:01]
andrei.lapusteanu Created first version
irva:resurse:gitguide [2024/10/21 23:16] (current)
andrei.lapusteanu Minor text edits
Line 3: Line 3:
 Pentru a vă ușura munca în cadrul laboratoarelor de IRVA, vă recomandăm să lucrați cu Git & GitHub. 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 fiecare ​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ă va clonați / descărcați de multiple ori proiectul.+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-uri către repo-uri: +Link către ​[[https://​github.com/​UPB-Graphics/​IRVA|Git ​repo]]
-  * Repo AR: <​LINK>​ (link_repo_original_ar) +
-  * Repo VR: <​LINK>​ (link_repo_original_vr)+
  
-===== Instalare Git ===== +Înainte de toate, asigurați-vă că aveți Git instalat, acesta se poate descărca de [[https://​git-scm.com|aici]]
- +  * În cazul instalării pe Windows
- +
-Înainte de toate, asigurați-vă că aveți Git instalat, acesta se poate descărca de aici <​LINK>​+
-  * În cazul instării pe Windows+
     * Asigurați-vă ca aveți bifat "Add Git to PATH"     * 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     * 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. De asemenea, asigurați-vă că aveți un cont de GitHub creat.
 +
 +Nu uitați să vă instalați și [[https://​git-lfs.com|Git LFS]].
  
 ===== Setup repo local (fork) ===== ===== Setup repo local (fork) =====
  
-Procedura recomandată pentru a putea lucra într-un singur repo este următoarea:​+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ță   * Realizați un **fork** al repo-ului original / referință
-  * Vă clonați fork-ul, pe care puteți apoi lucra pentru a rezolva laboratoarele+  * Vă **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 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
  
Line 36: Line 33:
 == 2. Clone fork == == 2. Clone fork ==
  
-Repo-ul forked, cel de pe contul vostru, va trebui să-l clonați ​acum pe mașina voastră locală.+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ă. 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''​). De pe repo-ul forked copiați link-ul către repo (butonul verde ''​Code''​).
  
-În Git Bash, rulați comanda ​(atenție, schimbați voi comanda după necesitate)+În Git Bash, rulați comanda:
  
 <​code>​ <​code>​
- +git clone https://​github.com/​UPB-Graphics/IRVA.git
-// Repo AR +
-git clone https://​github.com/​<​username>​/<​nume_repo_ar_WIP>​ +
- +
-// Repo VR +
-git clone https://​github.com/<​username>/<​nume_repo_vr_WIP>​ +
 </​code>​ </​code>​
 +
 +<note tip>
 +  * Puteți să clonați via SSH ''​git@github.com:​UPB-Graphics/​IRVA.git''​
 +  * [[https://​medium.com/​@kyledeguzmanx/​quick-step-by-step-guide-to-generating-an-ssh-key-in-github-d3c6f7e185bb|Setup Git SSH]]
 +</​note>​
  
 == 3. Adăugare upstream către repo-ul original == == 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 (atenție, schimbați voi comanda după necesitate):+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:
  
 <​code>​ <​code>​
  
-git remote add upstream ​<​link_repo_original_ar_sau_vr>​+git remote add upstream ​https://​github.com/​UPB-Graphics/​IRVA.git
  
 </​code>​ </​code>​
  
-== 4. Cum actualizez fork-ul ​pe baza repo-ului original? ==+== 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 **vizualiza** eventuale schimbări în repo-ul originalreulați comanda:+Pentru a face staging ​anumepentru a specifica fișierele pe care dorim să le supunem unui commit:
  
 <​code>​ <​code>​
-git fetch upstream+git add .
 </​code>​ </​code>​
  
-Pentru a **aplica** modificărilerulați:+<note important>''​git add .''​ pune toate schimbarile în //staging area//. Idealvă recomandăm să verificați în prealabil ce fișiere vor fi incluse în //staging area//</​note>​ 
 + 
 +Așadar, o comanda foarte utilă pentru a vedea starea curentă este:
  
-Fie comanda 
 <​code>​ <​code>​
-git merge upstream/​master+git status
 </​code>​ </​code>​
  
-Fie comanda+În continuare, după staging, trebuie să faceți ''​commit'',​ care aplică modificările **local**:
  
 <​code>​ <​code>​
-git pull upstream master+git commit -m "​Message here"
 </​code>​ </​code>​
  
-În esențăpull face fetch și merge într-o singură acțiuneașadar cea mai rapida variantă este să rulați direct:+În finalpentru a actualiza schimbările pe **remote**trebuie ​să faceți **push**:
  
 <​code>​ <​code>​
-git pull upstream master+git push
 </​code>​ </​code>​
  
-== 4. Cum pot lucra pe fork și să aplic schimbările mele (local)? ==+== 5. Cum actualizez ​fork-ul pe baza repo-ului original? ==
  
-Puteți lucra în mod obișnui pe repo-ul forked (local). În cazul în care doriți să-l actualizațide exemplu în urma rezolvării unui laboratorputeți rula:+<note important>​Î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''​)</​note>​
  
-Pentru a face staging ​adică specificăm fișierele pe care dorim să le supunem unui commit:+Pentru a **vizualiza** eventuale schimbări în repo-ul original, rulați comanda:
  
 <​code>​ <​code>​
-git add .+git fetch upstream
 </​code>​ </​code>​
  
-<note important>''​git add .''​ pune toate schimbarile în //staging area//. Idealvă recomandăm să verificați în prelabil ce fișiere vor fi incluse în //staging area//</​note>​+Pentru a **aplica** modificărilerulați:
  
-Așadar, o comanda ​foarte utilă pentru a vedea starea curentă este+Fie comanda 
 +<​code>​ 
 +git merge upstream/​main 
 +</​code>​ 
 + 
 +Fie comanda
  
 <​code>​ <​code>​
-git status+git pull upstream main
 </​code>​ </​code>​
  
-În continuare, după stagingtrebuie să faceți ''​commit'', ​care aplică modificările **local**:+În esență, ''​pull'' ​face ''​fetch''​ și ''​merge'' ​într-o singură acțiuneașadar cea mai rapida variantă este să rulați direct:
  
 <​code>​ <​code>​
-git commit -m "​Message here"+git pull upstream main
 </​code>​ </​code>​
  
-În final, pentru ​actualiza schimbările pe **remote**, trebuie ​să faceți **push**:+După acest pas se va deschide în bash un fișier în modul de editare al merge-ului. 
 + 
 +{{ :​irva:​resurse:​irva_2024_setupgit_2.png?​350 |}} 
 + 
 +Pentru ​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:
  
 <​code>​ <​code>​
 git push git push
 </​code>​ </​code>​
 +
 +În final, puteți vedea istoricul de commit-uri folosind comanda:
 +
 +<​code>​
 +git log --oneline
 +</​code>​
 +
 +În mod alternativ, există tool-uri vizuale ce vă ajută să studiați aceast istoric, noi recomandăm:​
 +  * GitKraken
 +  * JetBrains Rider
 +
 +===== Merge conflicts 🥲 =====
 +
 +<​note>​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.</​note>​
 +
 +===== Backup =====
 +
 +<note tip>Ca pentru orice informație digitală, chiar dacă totul merge smooth, vă recomandăm totuși **să faceți backup-uri**!</​note>​
irva/resurse/gitguide.1728291697.txt.gz · Last modified: 2024/10/07 12:01 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