Top 30 de întrebări și răspunsuri la interviul Git pe care trebuie să le știi în 2022

Publicat: 2021-01-04

Git este în creștere în popularitate. Dezvoltatorii lucrează continuu pentru a lansa versiuni mai noi ale aplicației non-beta pentru a remedia erori sau pentru a-și îmbunătăți funcționalitatea. Git acționează ca un control al versiunii în care toate modificările sunt stocate într-un singur depozit central.

Fiecare dezvoltator dintr-o echipă poate vizualiza versiunile, poate face modificări și apoi le poate încărca. De asemenea, funcționează incredibil de bine pentru persoanele care lucrează în echipe la distanță sau care lucrează de acasă. Git nu este folosit doar de dezvoltatori. Chiar și cei care nu sunt dezvoltatori din echipă îl pot folosi pentru a obține cea mai recentă versiune sau o anumită versiune a unei aplicații și o pot folosi pentru testare sau pentru alte lucrări.

Acolo unde Git este un instrument de linie de comandă, Git Hub este centrul, unde programatorii își salvează proiectele și comunică cu o echipă.

Astfel, cunoștințele despre Git sunt solicitate, iar odată cu creșterea cererii, am format un set de Întrebări de interviu Git care te-ar ajuta să-ți asiguri un loc de muncă. Pentru a fi mai ușor de înțeles, vom împărți Întrebările de interviu GitHub în trei secțiuni – Începători, Intermediar și Advance.

Cuprins

Întrebări de interviu Git la nivel de bază

Î.1) Explicați diferența dintre SVN și Git

  • SVN este un instrument centralizat de control al versiunilor aparținând celei de-a doua generații, spre deosebire de Git, care este un instrument descentralizat de control al versiunilor aparținând celei de-a treia generații.
  • În SVN, un depozit al serverului salvează istoricul versiunilor. În Git, puteți copia întregul depozit de pe computer.
  • În SVN, poți să comite doar atunci când ești online, spre deosebire de Git, unde poți să comiți chiar și atunci când ești offline.
  • Operațiunile de tragere și împingere sunt mai lente în SVN în comparație cu Git, unde sunt mai rapide.
  • În SVN, munca dvs. nu este partajată până când nu faceți acest lucru, spre deosebire de Git, care partajează automat.

Î.2) Ce este Git?

Git permite dezvoltatorilor și membrilor unei echipe să urmărească modificările făcute de oricine. De asemenea, vă permite să reveniți la versiunile mai vechi. Este un sistem de control al versiunilor distribuite care ajută echipa să știe cine a făcut modificările și la ce dată și oră. Are propriul set de avantaje față de alte sisteme de control al versiunilor.

Cel mai mare beneficiu al Git este că nu depinde de un server central pentru a salva toate versiunile unui proiect. Dezvoltatorii pot crea clone (copii) ale unui depozit pe propriile sisteme, care arată întregul istoric. Acest special ajută atunci când există o întrerupere gravă. În Git, există un depozit central în cloud unde programatorii sau membrii echipei pot efectua modificări și pot partaja cu echipa lor.

Î.3) Care este diferența dintre GitHub și Git?

Un serviciu de găzduire a depozitelor Git se numește GitHub. În plus, are propriile sale caracteristici, cum ar fi o interfață grafică bazată pe web. Mai mult, GitHub oferă și acces pe lângă faptul că servește ca instrument de management pentru un proiect.

Pe de altă parte, Git este un sistem de control al versiunilor de natură distribuită. Este folosit în principal pentru a urmări orice modificări făcute în aplicația non-beta. Oferă viteză, suport și integritate a datelor. Dezvoltatorii și alți membri ai echipei pot vedea cine a făcut ce modificări și la ce dată.

Î.4) Care sunt avantajele utilizării sistemului de control al versiunilor?

Ajută echipa și membrii acesteia, deoarece aceștia pot lucra în orice moment, deoarece sistemul de control al versiunilor le oferă flexibilitatea de a îmbina modificările pe care le-au făcut în versiunea comună fără nicio bătaie de cap.

Istoricul arată toate versiunile mai vechi și variantele acestora, permițând membrilor echipei să revină înapoi dacă este necesar. Membrii echipei au, de asemenea, un instantaneu al întregului proiect.

Membrii echipei trebuie să comenteze atunci când fac modificări, ceea ce îi ajută pe alții să înțeleagă care sunt schimbările exacte care fac proiectul mai organizat. Nimeni nu trebuie să aștepte o explicație. Membrii echipei știu exact cine a schimbat versiunea și de ce.

Dacă există o întrerupere nefericită a serverului, un VCS distribuit precum Git vă permite să aveți istoricul complet al proiectului, deoarece poate fi descărcat pe desktop.

Î.5) Ce limbă este folosită în Git?

Limbajul pe care Git îl folosește este limbajul „C”, deoarece viteza necesară GIT poate fi satisfăcută de limbajul „C”, deoarece reduce timpul de rulare, spre deosebire de alte limbaje de nivel înalt.

Î.6) Spuneți-ne câteva funcții de găzduire a depozitului Git

  • Github
  • Gitlab
  • SourceForge
  • Bitbucket
  • GitEnterprise

Q.7) Cum te angajezi la Git?

Pentru a scrie un mesaj de commit, trebuie să scrieți comanda „git commit -a”.

-a de pe linia de comandă comandă git să comite cel mai recent conținut al tuturor fișierelor urmărite care au fost modificate. Puteți folosi comanda „git add <fișier>” înainte de git commit -a dacă noile fișiere trebuie să fie comise pentru prima dată.

Î.8) Cum puteți remedia o comitere întreruptă?

Puteți folosi comanda „git commit –amend” pentru a remedia o comitere întreruptă. Prin rularea acestei comenzi, remediază mesajul de comitere rupt din editor.

Citiți: Cele mai bune întrebări la interviu Nagios

Q.9) Ce înseamnă un depozit în Git?

Este un loc în care Git salvează toate fișierele. Git are capacitatea de a stoca fișiere atât pe depozitul de la distanță, cât și pe cel local.

Q.10) Cum poți crea un depozit?

Crearea unui depozit este simplă în Git. Trebuie să creați un director pentru proiect dacă nu ați făcut deja. Apoi trebuie să rulați comanda „git init”. Această comandă creează directorul git în directorul proiectului.

Î.11) Explicați „repozitivul gol” în Git?

Un depozit simplu Git este utilizat în general ca un depozit la distanță, adică îl partajați cu membrii echipei sau cu alte persoane. Nu există niciun arbore de lucru în interiorul acestuia, deoarece nu există nicio lucrare în interiorul depozitului de la distanță. În alte fișiere, nu există fișiere în interiorul acestuia, pe care le veți edita. Dimpotrivă, un director de lucru conține un subdirector .git cu tot istoricul versiunilor și, de asemenea, un arbore de lucru.

Q.12) Ce înțelegeți prin „conflict” în git?

De obicei, Git gestionează toate îmbinările utilizând caracteristicile sale automate de îmbinare. Dar ar putea exista un conflict dacă două ramuri separate au primit editări exact în aceeași linie a unui fișier. Se poate întâmpla și atunci când un fișier este șters dintr-o ramură, dar a fost editat în alta. Acestea trebuie să se întâmple atunci când lucrați într-un mediu de echipă.

Q.13) Ce este git is-tree?

„git is-tree” reprezintă un obiect arbore care cuprinde modul și numele elementului, precum și valoarea SHA-1 a arborelui sau a unui blob.

Întrebări de interviu Git de nivel intermediar

Î. 14) Cum rezolvi un conflict dacă apare în Git?

Puteți rezolva conflictul în Git în următoarele moduri:

  1. Determinați ce fișiere au cauzat apariția conflictului.
  2. Rezolvați conflictul făcând modificări la acel fișier.
  3. Adăugați din nou aceste fișiere prin comanda git add.
  4. Utilizați comanda git commit pentru a comite fișierul.

Î.15) Dacă o comitere este deja împinsă și făcută publică, cum o reveniți înapoi în Git?

Există două metode prin care puteți face acest lucru, în funcție de situație:

  1. Puteți să-l eliminați complet sau să remediați fișierul prost într-un nou commit și apoi să-l împingeți înapoi în depozitul de la distanță. Aceasta este metoda cea mai frecvent utilizată pentru a remedia această problemă. După ce ați făcut modificările relevante în fișier, folosind comanda git commit -m „commit message”, îl trimiteți în depozitul de la distanță.
  2. Alternativ, puteți crea un nou commit care anulează toate modificările care au fost făcute în commit-ul prost. Puteți face acest lucru utilizând comanda git revert <numele comisiei greșite>

Citiți: Întrebări și răspunsuri la interviu Agile

Q.16) Ce este SubGit?

Este un instrument care permite migrarea de la SVN la Fit. Acesta creează o oglindă Git care poate fi scrisă a unui depozit Subversion local sau la distanță și folosește atât Subversion, cât și Git atâta timp cât doriți. Puteți folosi SubGit pentru a crea o oglindă Git-SVN bidirecțională a unui depozit existent Subversion. De asemenea, puteți face rapid un import unic din Subversion în Git.

Î.17) Care este diferența dintre comanda git pull și comanda git fetch?

Comanda Git pull preia toate noile modificări sau commit-uri dintr-o ramură precisă din depozitul central și actualizează ramura de destinație în depozitul local.

Comanda Git fetch este folosită pentru ceva similar, dar are o ușoară diferență. Când preluați, preia toate comenzile noi dintr-o ramură precisă și le salvează într-o nouă ramură din depozitul dvs. local. Dacă doriți să reflectați aceste modificări în ramura dvs. de destinație, trebuie să apelați git merge.

Astfel, Git pull = git fetch + git merge.

Î.18) Ce este „index” sau „zonă de pregătire” în Git?

Zona intermediară în care modificările pot fi formatate sau revizuite înainte de comitere se numește index sau zonă de pregătire în Git.

Q.19) Ce este git stash? Cum o aplici?

Există momente când o lucrare trebuie să fie întreruptă, deoarece trebuie să lucrați la o altă ramură ca prioritate. Munca pe jumătate făcută nu poate fi angajată, deoarece nu este în acea etapă completă, dar doriți să reveniți și să lucrați la ea într-un timp scurt. Pentru a rezolva această problemă, git slash oferă ajutor.

Îl salvează într-un teanc de modificări neterminate pe care le puteți finaliza și le puteți efectua ulterior. Pentru a reveni la această lucrare, tot ce trebuie să faceți este să apelați comanda git stash pentru a aplica. Vă aduce munca de unde ați lăsat-o în directorul de lucru.

Î. 20) Prin ce diferă git diff de „git status”?

„git diff” este aproape similar cu „git status”; singura diferență pe care o au amândoi este că primul dezvăluie diferențele dintre diferitele comite. '

Î.21) Prin ce diferă „git remote” de „git clone”?

Dacă doriți să creați o intrare în configurația dvs. git care menționează un nume pentru o anumită adresă URL, utilizați „git remote add”. Pe de altă parte, „git clone” creează un nou depozit git prin copierea unuia existent situat la adresa URL.

Citiți: Întrebări și răspunsuri la interviu Top React

Q.22) Descrieți strategiile de ramificare

Fiecare companie are propriile strategii de ramificare. Iată câteva dintre cele populare:

  • Ramificarea caracteristicilor – Un model de ramură a caracteristicilor salvează toate modificările făcute pentru o anumită caracteristică în interiorul unei ramuri. Numai după o testare amănunțită, această ramură este fuzionată cu stăpânul său.
  • Release branching – Odată ce ramura de dezvoltare a atins un punct în care este oarecum gata de lansare; îl puteți clona sau copia pentru a forma o ramură de lansare. După clonare, nu i se adaugă nicio funcție nouă. Puteți doar să remediați erori, să le documentați sau să faceți astfel de activități care sunt legate de îmbunătățirea acesteia pentru lansare. Odată testat, acesta este îmbinat cu masterul său și primește un număr de versiune. În plus, ar trebui să fie fuzionat înapoi în ramura de dezvoltare, care este posibil să fi avansat de la lansarea.
  • Ramificarea sarcinilor – În acest model, fiecare sarcină este efectuată pe ramura sa individuală, cu cheia sarcinii menținută în numele ramurii. Este clar să vedeți ce cod îndeplinește ce sarcină căutând cheia sarcinii în numele sucursalei.

Î.23) Explicați fluxul de lucru Gitflow?

Gitflow stochează istoricul unui anumit proiect prin utilizarea a două ramuri paralele de lungă durată, care sunt master și dezvoltă:

  • Maestrul – Acesta este gata de a merge la ramură. Totul este testat și aprobat pe această ramură.
  • Remediere rapidă – aceste ramuri sunt folosite pentru a corecta rapid versiunile de producție. Sunt aproape ca ramurile tale caracteristice și eliberează ramuri; în plus, se bazează pe master în loc să se dezvolte.
  • Dezvoltare – Toate ramurile de caracteristici sunt îmbinate în această ramură. Acestea sunt cele care sunt supuse testării. Abia după testare riguroasă, se îmbină cu ramura principală.
  • Caracteristică – fiecare caracteristică nouă ar trebui să se afle în propria sa ramură, care este apoi împinsă în ramura lor părinte, care este ramura de dezvoltare.

Î. 24) Cum se poate da seama dacă o ramură este fuzionată cu master?

Următoarele comenzi vă ajută să știți dacă sunt îmbinate sau nu:

git branch –merged – Listează toate ramurile care au fost îmbinate în ramura curentă. Apoi puteți vedea dacă este sau nu.

git branch –no-merged – Alternativ, puteți utiliza această comandă pentru a verifica toate ramurile care nu sunt îmbinate cu ramura sa principală.

Q.25) Cum poți elimina un fișier din git fără a-l șterge din sistemul tău de fișiere?

Trebuie să fiți precaut când adăugați fișiere în Git pentru a nu ajunge să adăugați fișiere greșite. Comanda git rm o va elimina din ambele - zona de instalare și sistemul de fișiere, așa că trebuie să utilizați comanda git reset.

Ai putea folosi git reset filename sau echo filename >> .gitingore

Q.26) Explicați rebazarea și îmbinarea în Git?

Utilizați comanda rebase pentru a integra editările dintr-o ramură în alta. Este folosit ca alternativă la comanda de îmbinare. Este o alternativă la comanda „merge”. Este diferit de merge, deoarece rescrie istoricul de comitere pentru a oferi o succesiune dreaptă, aranjată de comiteri.

Întrebări de interviu Git la nivel avansat:

Q.27) Cum squash ultimele N comiteri într-o singură comitere?

Există două moduri de a strica ultimele N comiteri într-o singură comitere, care sunt:

Dacă doriți să creați un nou mesaj de confirmare de la început, puteți utiliza următoarea comandă:

git reset –soft HEAD~N &&git commit

Dacă doriți să editați pur și simplu noul mesaj de comit cu o concatenare a mesajelor de comitere existente, atunci trebuie să preluați acele mesaje și să le transmiteți la Git commit utilizând comanda:

git reset –soft HEAD~N &&git commit –edit -m”$(git log –format=%B –reverse .HEAD@{N} )”

Q.28) Care sunt pașii pentru integrarea Jenkins cu Git?

Pasul 1: Trebuie să faceți clic pe tabloul de bord Jenkins pentru a gestiona butonul Jenkins.

Pasul 2: Faceți clic pe butonul de gestionare a pluginurilor.

Pasul 3: În pagina de pluginuri, trebuie să selectați pluginul GIT. Faceți clic pe instalare fără repornire. Pluginul este descărcat automat, în funcție de viteza internetului dvs.

Q.29) Explicați ce este Git bisect și cum îl folosiți pentru a ajunge la sursa unei erori?

Folosind Git bisect, vă puteți da seama ce eroare a cauzat comiterea utilizând căutarea binară. Comanda pentru Git bisect este git bisect <subcomandă> <opțiuni>

un algoritm de căutare binar, această comandă găsește care comite a cauzat eroarea în primul rând. Git bisect alege un commit între cele două puncte finale în care a fost introdus eroarea. Trebuie să poți stabili între un comit bun și unul rău. Continuă să-l filtreze, până când este găsit commit-ul exact.

Q.30) Explicați un reflog git?

Comanda „reflog” ajută la urmărirea fiecărei editări efectuate la referințele unui depozit. Păstrează un istoric de date al ramurilor și chiar păstrează o etichetă pentru cele create local sau în afara .

Această comandă trebuie executată în depozitul care avea ramura lipsă. În cazul unei situații de depozit la distanță, trebuie să rulați comanda reflog pe sistemul programatorului care a avut ramura.

Obțineți diplome de Inginerie software de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Concluzie

Sperăm că Întrebările de interviu Git Hub te ajută să obții jobul de vis. Acestea sunt cele mai frecvente întrebări Git adresate de intervievator. Vă dorim tot ce este mai bun pentru interviul dvs.!

Pregătiți-vă pentru o carieră a viitorului

Aplicați acum pentru masterat în inginerie software