AI Engineering · ADC 2026
Git Workflow Guide
GitHub Classroom · setup · workflow zilnic · Issues
1.Intrarea în GitHub Classroom

Se face o singură dată. Conectezi contul GitHub la numele tău din lista de studenți.

  1. Deschide link-ul GitHub Classroom primit pe Teams.
  2. Autentifică-te cu contul GitHub.
  3. Selectează numele tău real din roster.
  4. Dacă nu găsești numele, oprește-te și anunță profesorul.
  5. Ești direcționat automat spre alegerea echipei.
Atenție: Numele real e doar în roster. În repository lucrăm cu ID-uri: student_01, student_02 etc.
2.Alegerea echipei

Repository-ul apare automat după ce primul membru acceptă assignment-ul.

  1. Dacă ești team starter, creezi echipa cu numele exact: team-1, team-2 etc.
  2. Dacă echipa există, alegi Join existing team.
  3. Nu crea o echipă nouă dacă echipa ta există. Nu schimba numele.
exemplu
// Popescu Maria → team-1 → student_01 // Ionescu Andrei → team-1 → student_02
Important: Ceilalți membri nu intră automat. Fiecare accesează link-ul și intră în echipa corectă.
3.Clonarea repository-ului

Toți membrii lucrează în același repository. Fiecare îl clonează pe calculatorul propriu.

  1. Intră în repository-ul echipei din GitHub Classroom.
  2. Apasă Code → copiază link-ul HTTPS.
  3. Deschide terminalul în directorul unde ții proiectele.
terminal
git clone LINK_REPOSITORY cd NUME_REPOSITORY
LINK_REPOSITORY = link-ul din butonul Code
NUME_REPOSITORY = directorul creat automat
4.Structura proiectului

Proiectul se completează treptat. Nu toate directoarele sunt folosite din prima zi.

structura repository
README.md // descrierea proiectului echipei requirements.txt // biblioteci Python .env.example // model pentru .env local .gitignore // fișiere care nu se urcă pe GitHub notebooks/ // notebook-uri individuale data/ // date colectate și curățate assets/roles/ // roles.yaml — rolurile agenților core/ // cod profesor — nu se modifică app/app.py // aplicația Gradio reports/ // rapoarte, etică
DirectorCineCe se pune
notebooks/student_XX/individualnotebook-urile de seminar completate
data/echipăcorpus, date curățate, JSONL
assets/roles/echipărole cards pentru agenți
core/profesorcod de bază — nu se modifică
app/echipăaplicația finală
reports/echipăraport, limitări, etică
5.Python și venv

Se face o singură dată pe calculatorul tău. Mediul virtual .venv izolează bibliotecile proiectului.

Windows — PowerShell
python -m venv .venv .venv\Scripts\Activate pip install -r requirements.txt

If activation does not work, try .\.venv\Scripts\Activate.ps1. If PowerShell blocks the script, run Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser, then reopen the terminal.

Mac / Linux
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
activare la fiecare sesiune
.venv\Scripts\Activate // Windows source .venv/bin/activate // Mac / Linux
Nu urca .venv pe GitHub. Este local și ignorat de .gitignore.
6.Chei API și fișierul .env

Cheia API se păstrează local în .env. Nu se scrie în notebook și nu se urcă pe GitHub.

Windows
copy .env.example .env code .env
Mac / Linux
cp .env.example .env code .env
conținut .env
// Gemini — aistudio.google.com (gratuit) GEMINI_API_KEY=cheia_ta   // DeepSeek — platform.deepseek.com DEEPSEEK_API_KEY=cheia_ta   // OpenRouter — openrouter.ai (sute de modele) OPENROUTER_API_KEY=cheia_ta   // Groq — console.groq.com (rapid, gratuit) GROQ_API_KEY=cheia_ta
ProviderUnde creezi cheiaFree tier
Geminiaistudio.google.comda
DeepSeekplatform.deepseek.comda
OpenRouteropenrouter.aida
Groqconsole.groq.comda
Nu comite niciodată .env. Dacă ai urcat cheia din greșeală, șterge-o din contul provider-ului și generează alta.
7.Prima rulare

Verifică că proiectul pornește. Erorile despre roluri sau vector store lipsă sunt normale la început.

terminal — cu .venv activ
python app/app.py
erori frecvente
// ModuleNotFoundError → activează .venv pip install -r requirements.txt   // AuthenticationError → verifică .env code .env   // FileNotFoundError roles/vectorstore → normal, se rezolvă în C3-C6
8.Individual vs echipă

Există două tipuri de muncă cu directoare diferite în repository.

Individual
notebooks/student_XX/

Notebook-urile de seminar. Fiecare lucrează în directorul său.

Echipă
data/ assets/roles/ app/ reports/

Role cards, corpus, aplicație, raport final.

9.Notebook-uri individuale

Notebook-urile vin de pe Teams. Le descarci, le completezi și le pui în directorul tău.

  1. Descarcă notebook-ul de pe Teams.
  2. Copiază-l în notebooks/student_XX/
  3. Completează celulele TODO și rulează (Run All).
  4. Salvează, fă commit și push.
terminal — exemplu student_03, cursul 1
git pull origin main git add notebooks/student_03/ git commit -m "add C1 notebook student_03" git push
Nu pune numele real în directoare sau fișiere. Folosește student_01, student_02 etc.
10.Workflow Git zilnic

La început: pull. La final: commit + push. Fără excepții.

▶ La început
.venv\Scripts\Activate // sau: source .venv/bin/activate   git pull origin main

Pull descarcă schimbările colegilor. Notebook-urile noi vin de pe Teams.

◼ La final
git status git add . git commit -m "mesaj" git push

Commit des. Push la finalul sesiunii.

Mesaje bune: "add role card agent anti_sistem"   "complete C2 notebook student_02"
11.Issues și GitHub

Issues sunt lista de taskuri a echipei. Se folosesc și pentru a cere ajutor profesorului.

  1. Deschide tab-ul Issues din repository.
  2. Alege un task și notează în comentariu că lucrezi la el.
  3. Fă commit cu mesaj clar când termini.
  4. Închide issue-ul manual după ce echipa verifică.
cum deschizi o întrebare pentru profesor
// Issues → New Issue // Titlu: [Întrebare] descriere scurtă a problemei // Descriere: ce ai încercat + mesajul de eroare exact // Labels → question // Assignees → @profesor
IssueLivrabil
#1 Setupaplicația pornește
#2 Notebook C1notebooks/student_XX/c1...
#3 Role cardsassets/roles/roles.yaml
#4 Corpusdata/raw/, data/cleaned/
#5 RAGrezultate documentate
#6 Appapp/app.py funcțional
#7 Reportreports/ completat
12.Comenzi Git

Comenzi de bază — în fiecare sesiune:

ComandăCe face
git statusarată ce s-a schimbat
git pull origin maindescarcă schimbările colegilor
git add .pregătește toate fișierele
git add FISIERpregătește un singur fișier
git commit -m "mesaj"salvează o versiune locală
git pushtrimite pe GitHub

Inspecție:

ComandăCe face
git log --onelineistoricul scurt
git log --oneline -10ultimele 10 commituri
git diffce linii s-au schimbat
git diff FISIERschimbările unui fișier
git log --oneline --graph --allarbore cu toate branch-urile

Corecție:

ComandăCe face
git restore FISIERanulează modificările locale
git restore .anulează toate modificările locale
git commit --amend -m "mesaj"corectează ultimul commit (înainte de push)
git reset HEAD~1anulează ultimul commit, păstrează fișierele
13.Conflicte

Apare când două persoane modifică aceeași parte din același fișier. Se evită lucrând fiecare în directorul său.

Prevenire: lucrează în notebooks/student_XX/, pull înainte să începi, push la final.
rezolvare conflict
git status // arată ce fișier are conflict   // deschizi fișierul și cauți markerii: <<<<<<< HEAD // varianta ta ======= >>>>>>> main // varianta colegului   // păstrezi ce e corect, ștergi markerii, salvezi git add . git commit -m "resolve merge conflict" git push
Nu șterge repository-ul și nu folosi force push. Deschide un Issue și anunță profesorul.
14.Reguli obligatorii
  1. Nu urca niciodată .env pe GitHub.
  2. Nu scrie chei API în notebook-uri. Folosește .env.
  3. Nu pune nume reale în directoare. Folosește student_01, student_02 etc.
  4. Lucrează în directorul tău: notebooks/student_XX/
  5. Nu modifica directorul altui student.
  6. Nu modifica core/ decât dacă profesorul cere explicit.
  7. Folosește git pull înainte să începi orice sesiune.
  8. Folosește git push la finalul fiecărei sesiuni.
  9. Scrie mesaje de commit clare și descriptive.
  10. Nu folosi git push --force.
  11. Dacă nu știi ce face o comandă, întreabă — deschide un Issue cu label question.