This shows you the differences between two versions of the page.
|
irva:resurse:gitguide [2024/10/07 12:01] andrei.lapusteanu Created first version |
irva:resurse:gitguide [2025/10/07 00:23] (current) andrei.lapusteanu Fixed typos |
||
|---|---|---|---|
| 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: | + | <note>Link către [[https://github.com/UPB-Graphics/IRVA|Git repo]]</note> |
| - | * 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]]. | |
| - | Înainte de toate, asigurați-vă că aveți Git instalat, acesta se poate descărca de aici <LINK>. | + | * În cazul instalării pe Windows |
| - | * Î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 exemplu actualizăm 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. | În continuare vă prezentăm procedura pentru a face setup-ul necesar. | ||
| Line 36: | Line 34: | ||
| == 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 | ||
| + | </code> | ||
| - | // Repo AR | + | <note tip> |
| - | git clone https://github.com/<username>/<nume_repo_ar_WIP> | + | * 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]] | |
| - | // Repo VR | + | </note> |
| - | git clone https://github.com/<username>/<nume_repo_vr_WIP> | + | |
| - | + | ||
| - | </code> | + | |
| == 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)? == |
| - | Pentru a **vizualiza** eventuale schimbări în repo-ul original, reulați comanda: | + | 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: | ||
| <code> | <code> | ||
| - | git fetch upstream | + | git add . |
| </code> | </code> | ||
| - | Pentru a **aplica** modificările, rulați: | + | <note important>''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//</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țiune, așadar cea mai rapida variantă este să rulați direct: | + | În final, pentru 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ți, de exemplu în urma rezolvării unui laborator, puteț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//. Ideal, vă recomandăm să verificați în prelabil ce fișiere vor fi incluse în //staging area//</note> | + | Pentru a **aplica** modificările, rulaț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ă staging, trebuie să faceți ''commit'', care aplică modificările **local**: | + | În esență, ''pull'' face ''fetch'' și ''merge'' într-o singură acțiune, aș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 a 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 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 voastră 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 acest 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> | ||