Sariți la conținutul principal

Top 25 de întrebări și răspunsuri despre Git pentru toate nivelurile

Reîmprospătează-ți cunoștințele despre comenzile, conceptele și comparațiile Git care apar cel mai des în interviurile tehnice
Actualizat 2 iun. 2026  · 13 min. citire

Git este un instrument esențial în trusa modernă a dezvoltatorului, cunoscut pentru capabilitățile sale puternice de control al versiunilor. Creat de Linus Torvalds în 2005 pentru a sprijini dezvoltarea nucleului Linux, Git a devenit de atunci coloana vertebrală a nenumăratelor proiecte software din întreaga lume. Eficiența și flexibilitatea sa în gestionarea versiunilor proiectelor, împreună cu suportul robust pentru colaborare, îl fac indispensabil pentru echipe de toate dimensiunile.

Acest articol își propune să te pregătească pentru interviuri tehnice, acoperind top 20 de întrebări despre Git, de la nivel începător la avansat. Fie că ești nou în Git sau vrei să îți aprofundezi înțelegerea, aceste întrebări și răspunsuri te vor ajuta să îți demonstrezi competența și să obții rezultatul dorit la interviu.

Întrebări de bază pentru interviuri despre Git

Dacă ești relativ nou în Git, este probabil ca o parte dintre întrebările de bază din interviu să vizeze concepte și utilizări pentru începători. Dacă ai nevoie să te pui la punct, nu uita să consulți cursul DataCamp Introduction to Git.

Ce este un depozit (repository) Git?

Un repository Git stochează fișierele și istoricul reviziilor unui proiect și facilitează controlul versiunilor prin urmărirea modificărilor în timp. Poate fi local, într-un folder de pe dispozitivul tău, sau pe o platformă online precum GitHub. Acest lucru le permite utilizatorilor să colaboreze, să revină la versiuni anterioare și să gestioneze eficient dezvoltarea proiectului folosind comenzi precum commit, push și pull.

Cum funcționează Git?

Git funcționează prin înregistrarea modificărilor aduse fișierelor și directoarelor dintr-un proiect, capturând instantanee ale stării sale în evoluție. Utilizatorii pot urmări modificările, crea ramuri pentru dezvoltare în paralel, îmbina ramuri și reveni la stări anterioare dacă este necesar. De asemenea, promovează colaborarea și asigură un control eficient al versiunilor în proiectele software.

Ce este git add?

Comanda git add este folosită în Git pentru a pregăti modificările în vederea includerii lor în următorul commit. Ea pregătește modificările, adăugirile sau ștergerile făcute în directorul de lucru, marcându-le pentru a fi incluse în următoarea instantanee de commit. Observă că această comandă nu face efectiv commit la modificări, ci doar le pregătește pentru staging.

Ce este git push?

Comanda git push este utilizată în Git pentru a încărca conținutul repository-ului local într-un repository la distanță. Transferă modificările comise din repository-ul local în unul remote, de obicei pe un server precum GitHub sau GitLab. Această comandă permite colaborarea, permițând utilizatorilor să își partajeze modificările cu alții din același proiect.

Poți afla mai multe despre Git push și pull în tutorialul nostru separat.

Ce este git status?

Comanda git status afișează starea curentă a repository-ului în Git. Oferă informații despre ce fișiere au fost modificate, care sunt pregătite pentru următorul commit și care sunt neurmărite (untracked). Te ajută să urmărești progresul muncii tale și să identifici modificările care trebuie comise sau puse în staging.

Ce este un commit în Git?

Un commit reprezintă o instantanee a modificărilor aduse fișierelor dintr-un repository la un moment specific în timp. Când faci commit la modificări în Git, salvezi efectiv starea curentă a fișierelor tale și poți oferi un mesaj descriptiv care explică modificările făcute (ceea ce este recomandat).

Fiecare commit creează un identificator unic, permițându-ți să urmărești istoricul modificărilor din repository. Commit-urile joacă un rol crucial în controlul versiunilor, deoarece oferă o cale de a reveni la stările anterioare ale proiectului, de a revizui istoricul modificărilor și de a colabora cu alții prin partajarea actualizărilor.

Fișă de buzunar Git

Aruncă o privire pe Git Cheat Sheet de la DataCamp pentru a te ajuta la pregătirea interviului

Ce este ramificarea (branching) în Git?

Ramificarea se referă la practica de a te abate de la linia principală de dezvoltare (denumită de obicei main și numită anterior master) pentru a lucra la funcționalități noi, remedieri sau experimente fără a afecta codul principal. Permite coexistența mai multor linii paralele de dezvoltare în același repository.

Fiecare ramură reprezintă o linie separată de dezvoltare, cu propriul set de commit-uri, permițând dezvoltatorilor să lucreze simultan la funcționalități sau remedieri diferite. Ramificarea facilitează colaborarea, experimentarea și organizarea într-un proiect, deoarece modificările făcute într-o ramură pot fi îmbinate înapoi în codul principal odată ce sunt finalizate și testate.

Ce este un conflict în Git?

Conflictele apar atunci când sunt făcute modificări care intră în conflict asupra aceleiași părți dintr-un fișier sau din mai multe fișiere de către contribuabili diferiți, de obicei în timpul unei operațiuni de merge sau rebase. Git nu poate rezolva automat aceste modificări conflictuale, necesitând intervenție manuală din partea utilizatorului pentru a soluționa discrepanțele.

Pentru a rezolva un conflict, deschide fișierul afectat — Git va marca secțiunile conflictuale cu marcajele <<<<<<<, ======= și >>>>>>>. Editează fișierul pentru a păstra versiunea corectă, elimină marcajele, apoi:

git add <resolved-file>
git commit
Instrumente precum VS Code, IntelliJ și git mergetool pot face acest proces mai vizual și mai ușor de parcurs.

Ce este merge în Git?

Merge-ul este o operațiune fundamentală în Git care facilitează colaborarea și integrarea modificărilor din ramuri diferite ale unui proiect. Concret, un merge este procesul de combinare a modificărilor din ramuri diferite într-o singură ramură, de obicei ramura principală (de ex., master sau main).

Un merge integrează modificările făcute într-o ramură cu o alta, rezultând un nou commit care combină istoricul ambelor ramuri. Poți afla mai multe despre cum să rezolvi conflictele de merge în Git în tutorialul nostru separat.

Întrebări intermediare pentru interviuri despre Git

Ce este un remote în Git?

Un remote este un repository găzduit pe un server sau pe un alt computer, pentru colaborare și partajarea codului cu alții. Acționează ca un punct central unde dezvoltatorii își pot împinge (push) modificările locale și pot trage (pull) modificările făcute de alții.

Remote-urile sunt de obicei configurate pe platforme de găzduire precum GitHub, GitLab sau Bitbucket și permit dezvoltarea distribuită și munca în echipă, oferind un loc comun pentru stocarea și sincronizarea codului proiectului între mai mulți contribuitori.

Cum revoci un commit care a fost deja împins (push) și făcut public?

Comanda git revert <commit-hash> poate fi folosită pentru a revoca un commit care a fost deja împins și făcut public.

Procesul pas cu pas este următorul:

1. Identifică commit-ul la care vrei să revii găsind hash-ul commit-ului. Acest lucru se poate face folosind comanda git log pentru a vizualiza istoricul commit-urilor și a găsi hash-ul dorit.

2. După ce ai hash-ul commit-ului, folosește comanda git revert urmată de hash pentru a crea un nou commit care anulează modificările introduse de commit-ul specificat. De exemplu:

git revert <commit-hash>

3. Git va deschide un editor de text pentru a crea mesajul de commit pentru revert. Poți edita mesajul dacă e nevoie, apoi salvează și închide editorul.

4. După ce ai salvat mesajul de commit, Git va crea un nou commit care anulează efectiv modificările introduse de commit-ul specificat. Acest nou commit va fi adăugat în istoric, revenind practic la modificările făcute de commit-ul inițial.

5. În final, împinge noul commit în repository-ul remote pentru a face revert-ul public, folosind următoarea comandă:

git push origin <branch-name> 

Folosirea git revert creează un nou commit care anulează modificările introduse de commit-ul inițial, revenind la acele schimbări fără a altera istoricul commit-urilor. Această abordare este mai sigură decât git reset sau git amend, care pot modifica istoricul și pot cauza probleme pentru colaboratorii care au tras deja modificările.

Ce este git stash?

git stash este o comandă Git care stochează temporar modificările din directorul de lucru care nu sunt gata pentru commit. Le permite dezvoltatorilor să își salveze modificările fără a le comite în repository.

Stash-ul este util când schimbi ramurile, dar nu vrei să faci commit sau să pierzi modificările. Ulterior, poți aplica modificările puse în stash în directorul de lucru sau le poți extrage din stivă pentru a continua să lucrezi la ele.

Ce este git reflog?

git reflog este o comandă Git folosită pentru a vizualiza jurnalele de referință, care înregistrează modificările pointerului HEAD și istoricul commit-urilor care au fost verificate (checked out) în repository. Oferă o listă cronologică a acțiunilor recente efectuate în repository, inclusiv commit-uri, checkout-uri, merge-uri și reset-uri.

Reflog-ul este util pentru recuperarea commit-urilor sau ramurilor pierdute și pentru înțelegerea succesiunii acțiunilor efectuate în repository.

Cum faci ca o ramură Git existentă să urmărească o ramură remote?

Pentru ca o ramură Git existentă să urmărească o ramură remote, poți folosi comanda git branch cu opțiunea --set-upstream-to sau -u, urmată de numele ramurii remote.

Sintaxa va arăta astfel:

git branch --set-upstream-to=<remote-name>/<branch-name>

sau

git branch -u <remote-name>/<branch-name>

Întrebări avansate pentru interviuri despre Git

Cum gestionezi configurații multiple pentru proiecte diferite în Git?

Pentru a gestiona diverse configurații, utilizează comanda git config împreună cu indicii --global, --system sau --local pentru a ajusta setările la niveluri distincte. Alternativ, folosește includeIf în configurația Git pentru a include setări specifice în funcție de calea repository-ului.

Cum gestionezi fișiere mari cu Git?

Gestionarea fișierelor mari în Git poate fi dificilă din cauza impactului asupra dimensiunii repository-ului și a performanței. Folosește Git LFS pentru a stoca fișierele mari în afara repository-ului Git, păstrând în repository doar pointeri ușori către acestea. Astfel, dimensiunea repository-ului scade și performanța se îmbunătățește. Git LFS suportă diverși furnizori de stocare și se integrează fără probleme cu fluxurile de lucru Git.

La ce folosește git submodule și cum actualizezi unul?

Comanda git submodule gestionează dependențele externe în cadrul unui repository Git. Îți permite să incluzi repository-uri externe ca submodule în repository-ul principal. Acest lucru este util când vrei să încorporezi cod din surse externe, păstrându-l separat de codul principal al proiectului tău.

Pentru a actualiza un submodule în Git, poți urma pașii de mai jos:

  1. Navighează la directorul submodule-ului din repository-ul principal.

  2. Folosește git fetch pentru a aduce cele mai recente modificări din repository-ul remote al submodule-ului.

  3. Dacă vrei să actualizezi la cel mai recent commit de pe ramura urmărită de submodule, poți folosi git pull.

  4. Alternativ, dacă vrei să actualizezi la un commit sau la o ramură specifică, poți folosi git checkout urmat de hash-ul commit-ului dorit sau numele ramurii.

  5. După ce ai actualizat submodule-ul la starea dorită, trebuie să faci commit în repository-ul principal pentru a reflecta starea actualizată a submodule-ului.

Ce este git cherry-pick și când l-ai folosi?

git cherry-pick îți permite să aplici un commit specific dintr-o ramură pe alta, fără a îmbina întreaga ramură.

git cherry-pick <commit-hash>
 
Un caz de utilizare comun este backportarea unei remedieri. Să zicem că un bug a fost rezolvat pe ramura ta main, dar ai nevoie de aceeași remediere și într-o ramură release — poți să cherry-pick-ul doar acel commit în loc să îmbini tot main în release.

Este util și când un commit a fost făcut accidental pe ramura greșită: îl poți cherry-pick-ui pe ramura corectă, apoi îl revoci din locul unde nu ar trebui să fie.

Ce este git bisect și la ce folosește?

git bisect este un instrument de depanare care folosește căutarea binară pentru a găsi commit-ul specific care a introdus un bug. În loc să verifici manual commit-urile unul câte unul, îi spui lui Git care commit este „bun” (fără bug) și care este „rău” (are bugul), iar Git va face checkout la commit-uri intermediare, înjumătățind de fiecare dată spațiul de căutare până găsește vinovatul.

git bisect start
git bisect bad                # commitul curent are bugul
git bisect good <commit-hash> # acest commit mai vechi era în regulă
# Git face checkout la un commit intermediar; îl testezi, apoi:
git bisect good   # sau git bisect bad
# repetă până când Git identifică primul commit defect
git bisect reset  # revino la starea inițială când ai terminat

Este mult mai rapid decât căutarea manuală în repository-uri mari cu sute de commit-uri.

Ce sunt hook-urile Git și cum sunt folosite?

Hook-urile Git sunt scripturi care rulează automat în puncte specifice ale fluxului de lucru Git. Ele se află în directorul .git/hooks/ al unui repository și pot fi scrise în orice limbaj de scripting.

Există două tipuri:

  • Hook-uri client-side care rulează pe mașina ta locală — de exemplu, pre-commit (rulează înainte de a crea un commit) sau commit-msg (validează formatul mesajului de commit).

  • Hook-uri server-side care rulează pe serverul remote — de exemplu, pre-receive (rulează înainte ca commit-urile împinse să fie acceptate).

Un caz de utilizare comun este folosirea unui hook pre-commit pentru a rula automat un linter sau o suită de teste înainte de a permite un commit. Astfel se aplică standarde de calitate a codului în întreaga echipă.

Reține că hook-urile nu sunt copiate atunci când clonezi un repository, așa că echipele care se bazează pe ele le partajează de obicei printr-un script separat sau un instrument precum pre-commit (pachetul Python).

Întrebări despre concepte Git frecvent confundate

Care este diferența dintre git fetch și git pull?

Principala diferență dintre git fetch și git pull constă în ceea ce fac și cum actualizează repository-ul local.

Comanda git fetch preia modificări dintr-un repository remote în repository-ul local. Ea actualizează ramurile de urmărire remote (de ex., origin/master) în repository-ul local pentru a reflecta starea repository-ului remote, dar nu actualizează directorul de lucru și nici nu îmbină vreo modificare în ramura curentă. Asta înseamnă că după fetch poți revizui modificările făcute în repository-ul remote fără a-ți afecta munca locală.

Comanda git pull de asemenea preia modificări dintr-un repository remote, dar merge mai departe, aducând modificările și îmbinându-le în ramura curentă într-un singur pas. Practic, execută un git fetch urmat de un git merge pentru a încorpora modificările din repository-ul remote în ramura curentă.

Ce face git reset?

Comanda git reset resetează HEAD-ul curent la o stare specificată. Asta înseamnă că poate fi folosită pentru a anula modificări, a scoate fișiere din staging sau a muta indicatorul HEAD la un alt commit. Observă că există trei moduri principale pentru git reset:

  • --soft: Resetează indicatorul HEAD la un commit specific, păstrând modificările în staging. Fișierele rămân modificate în directorul de lucru, permițându-ți să le comiți din nou.
  • --mixed: Resetează indicatorul HEAD la un commit specific, scoțând modificările din staging. Fișierele rămân modificate în directorul de lucru, dar schimbările nu sunt puse în staging pentru commit.
  • --hard: Resetează indicatorul HEAD la un commit specific, aruncând toate modificările din directorul de lucru și zona de staging. Folosește cu prudență, deoarece șterge definitiv modificările necomise.

Important: Nu folosi niciodată git reset --hard pe commit-uri care au fost deja împinse într-o ramură remote partajată. Rescrie istoricul și va cauza probleme serioase colegilor care au tras deja acele commit-uri. Folosește în schimb git revert pentru commit-uri publice.

Care este semnificația lui git push --force-with-lease față de git push --force?

git push --force-with-lease este o abordare mai precaută de a face force-push la modificări într-un repository remote decât git push --force, deoarece previne suprascrierea accidentală a modificărilor făcute de alții pe repository-ul remote.

Când folosești git push --force, împingi cu forța modificările în repository-ul remote indiferent dacă alții l-au actualizat de la ultimul tău fetch. Acest lucru poate duce la pierderea neintenționată a muncii altor dezvoltatori.

În schimb, git push --force-with-lease este o alternativă mai sigură. Verifică dacă ramura remote către care împingi a fost actualizată de alții de la ultimul tău fetch. Dacă ramura remote a fost actualizată, push-ul este respins, împiedicându-te să suprascrii din greșeală modificările altor dezvoltatori.

Ce este git rebase și cum diferă de git merge?

Atât git rebase, cât și git merge integrează modificări dintr-o ramură în alta, dar o fac în moduri diferite.

  • git merge combină istoria a două ramuri creând un „merge commit” nou. Aceasta păstrează întreg istoricul despre când ramurile au divergat și când s-au reunit, lucru util pentru audit și transparență în echipă.

  • git rebase mută sau reinterpretează commit-urile unei ramuri peste alta, producând un istoric curat și liniar, fără merge commit-uri. Acest lucru face jurnalul mai ușor de citit, dar rescrie istoricul commit-urilor. De aceea, regula de aur a rebase-ului este aceasta: nu face niciodată rebase pe o ramură la care lucrează și alții.

Care este diferența dintre git clone și git fork?

Clonarea creează o copie locală a unui repository remote pe mașina ta. Ești în continuare conectat la același repository și poți face push înapoi (dacă ai permisiuni).

git clone https://github.com/user/repo.git
Fork-ul creează o copie pe server a repository-ului altcuiva, sub propriul tău cont — de obicei pe GitHub sau GitLab. Deții fork-ul și poți face push liber. Când modificările sunt gata, trimiți un pull request către repository-ul original.

Fork-ul este fluxul standard pentru a contribui la proiecte open-source unde nu ai acces direct de scriere la repository-ul original.

Pregătirea pentru un interviu despre Git

Prezentarea cunoștințelor și experienței tale în Git în timpul interviurilor este esențială pentru a-ți demonstra competența în controlul versiunilor și colaborare în cadrul echipelor de dezvoltare software.

Să vedem câteva sfaturi pe care ar trebui să le urmezi când te pregătești pentru interviul tehnic, pentru a-ți comunica eficient abilitățile în Git:

Înțelege fundamentele Git

Asigură-te că ai o înțelegere solidă a fundamentelor Git, inclusiv repository-uri, ramificare, îmbinare, commit-uri și comenzi de bază precum pull, push, clone și commit. Această bază va sta la temelia discuției din interviu. Ajută și să înțelegi temeinic principii esențiale precum controlul versiunilor, diferențele dintre Git și alte sisteme de control al versiunilor.

În cele din urmă, familiarizează-te cu metodologii Git diverse, precum Git Flow, GitHub Flow și GitLab Flow. Evaluează avantajele și dezavantajele fiecărei abordări și identifică situațiile în care sunt cele mai utile.

Ghidul nostru complet despre Git este un punct bun de plecare pentru a te familiariza cu elementele de bază.

Câștigă experiență practică

Cu cât folosești mai mult Git, cu atât îți consolidezi cunoștințele. Practica regulată îți sporește familiaritatea cu diverse comenzi și proceduri. Caută să integrezi Git în fluxul tău zilnic de lucru pentru a căpăta mai multă expunere. Asigură-te că experimentezi crearea de ramuri, îmbinarea lor și rezolvarea conflictelor.

Dacă nu ești sigur la ce proiecte să lucrezi pentru a obține experiență practică cu Git, participarea la proiecte open-source prin platforme precum GitHub este o modalitate excelentă de a avea expunere directă la instrumente și fluxuri de lucru utilizate în industrie.

Învață problemele comune și cum să le depanezi

Este inevitabil să întâmpini probleme când folosești Git. Unele probleme comune includ conflicte de merge, stări detached HEAD, revenirea la modificări și recuperarea commit-urilor pierdute. Diagnosticarea problemelor Git îți îmbunătățește abilitățile de depanare și favorizează o înțelegere mai profundă a mecanismelor interne ale Git.

Prin depanare activă și analizarea mesajelor de eroare, vei obține perspective asupra funcționării interne a Git și îți vei dezvolta competența în identificarea și rezolvarea eficientă a problemelor. Această abordare proactivă reduce riscurile potențiale și construiește eficient încredere și expertiză în gestionarea fluxurilor de lucru de control al versiunilor.

Exersează interviuri simulate

Prin participarea la interviuri simulate, candidații pot identifica zonele slabe în cunoștințele lor despre Git și în abilitățile de comunicare, permițându-le să își concentreze eficient eforturile de pregătire.

În plus, interviurile simulate oferă oportunități valoroase pentru candidați de a-și rafina abilitățile de rezolvare a problemelor, abordând scenarii realiste legate de Git și exerciții de codare. Această practică practică îi ajută pe candidați să își dezvolte încrederea în abilitățile lor Git și să își îmbunătățească abilitatea de a-și expune clar gândurile în timpul interviului.

Concluzie

Git este un sistem puternic de control al versiunilor, utilizat pe scară largă în dezvoltarea software pentru a gestiona modificările de cod, a colabora cu alții și a menține istoricul proiectelor. Familiaritatea cu Git este esențială pentru interviurile tehnice, deoarece demonstrează competență în instrumente și fluxuri de lucru esențiale pentru dezvoltatori, evidențiază abilitățile de colaborare și capacitatea de a gestiona eficient codul în echipe.

În plus, înțelegerea conceptelor și comenzilor Git permite practici eficiente de control al versiunilor, asigurând integritatea codului, continuitatea proiectului și procese de dezvoltare mai cursive. Astfel, cunoașterea Git este neprețuită pentru viitorii ingineri software și dezvoltatori care navighează interviuri tehnice și urmăresc cariere de succes

Pentru învățare suplimentară, consultă următoarele resurse:

Subiecte

Continuă-ți călătoria în Git chiar astăzi!

track

Inginer de date în Python

40 oră
Dobândește competențe foarte căutate pentru a ingera, curăța și gestiona eficient datele, precum și pentru a programa și monitoriza pipeline-urile, diferențiindu-te în domeniul ingineriei datelor.
Vezi detaliiRight Arrow
Începeți cursul
Vezi mai multRight Arrow