Top 50 pitanja i odgovora na GIT intervjuu (2026.)

Pripremate se za intervju za GIT? Vrijeme je da istražite ključna pitanja koja testiraju vašu stručnost u kontroli verzija. Razumijevanje Pitanja za intervju za GIT pomaže u otkrivanju dubine rješavanja problema, navika suradnje i učinkovitosti upravljanja tijekom rada.

Karijera u kontroli verzija i suradnji nudi ogromne mogućnosti za profesionalce s jakim tehničkim iskustvom i stručnošću u domeni. Od početnika do viših inženjera, savladavanje uobičajenih i naprednih koncepata pomaže u rješavanju izazovnih sesija pitanja i odgovora. Rad na terenu poboljšava analitičke vještine, timski rad i praktičnu tehničku stručnost koju cijene menadžeri i voditelji timova.

Temeljen na uvidima više od 75 stručnjaka, uključujući tehničke voditelje, menadžere i razvojne programere, ovaj vodič objedinjuje vrhunske perspektive intervjua za GIT u svim industrijama, osiguravajući vjerodostojnost, praktičnu točnost i sveobuhvatnu pokrivenost za sve razine iskustva.

Pitanja i odgovori za intervju za GIT

50 najvažnijih pitanja i odgovora za intervju za GIT

1) Što je Git i kako se razlikuje od drugih sustava za kontrolu verzija?

Git je distribuirani sustav za kontrolu verzija osmišljen za track promjena u izvornom kodu tijekom razvoja softvera. Za razliku od centraliziranih sustava poput SVN-a ili CVS-a, Git omogućuje svakom programeru da ima potpunu kopiju repozitorija, uključujući njegovu kompletnu povijest. Ovaj decentralizirani model poboljšava brzinu, fleksibilnost i pouzdanost.

Primjer: Kada klonirate Git repozitorij, možete raditi izvan mreže i commitirati lokalno, za razliku od SVN-a gdje je za svaki commit potrebna internetska veza.

Faktor ići SVN
Architektura distribuiran centralizirani
Brzina Brže sporiji
Izvanmrežni rad Podržano Nije podržano
grananje Lak Teško i sporo

👉 Besplatno preuzimanje PDF-a: Pitanja i odgovori za intervju za GIT


2) Objasnite Gitov tijek rada i životni ciklus datoteke.

Životni ciklus Git datoteke predstavlja kako se datoteka kreće kroz različita stanja u repozitoriju.

Datoteke u Gitu mogu postojati u jednom od četiri primarna stanja: Untracked, Promijenio, priređeni Opredijeljeni.

  1. Untracked: Novokreirane datoteke koje još nisu dodane u Git.
  2. Promjena: Datoteke koje su uređivane od zadnjeg commita.
  3. Postavljeno: Datoteke dodane pomoću git add i spreman/spremna za obvezu.
  4. Predan: Datoteke trajno spremljene u repozitorij s git commit.

Primjer: Programer stvara novu datoteku → pokreće se git add → zatim ga potvrđuje. Ovaj niz dovršava životni ciklus datoteke od untracpočinio.


3) Kako funkcioniraju grananje i spajanje u Gitu?

Grananje omogućuje više programera da istovremeno rade na odvojenim značajkama bez utjecaja na glavnu kodnu bazu. Svaka grana predstavlja neovisnu liniju razvoja.

Spajanje kombinira promjene iz jedne grane u drugu, obično integrirajući značajne grane natrag u glavnu granu.

Primjer: Ako stvorite a feature/login granu, radite na njoj neovisno, a zatim je spojite s main, sigurno konsolidirate svoju novu značajku.

naredba Svrha
git branch feature Stvara novu granu
git checkout feature Prebacuje se na granu
git merge feature Spaja se s glavnom granom

4) Koje su različite vrste Git objekata?

Git pohranjuje podatke kao objekte u svojoj internoj bazi podataka. Četiri primarne vrste objekata su:

  1. Mrlja: Pohranjuje podatke o datotekama.
  2. Stablo: Predstavlja direktorije i strukture datoteka.
  3. Počiniti: Bilježi promjene s metapodacima poput autora, datuma i nadređene commit datoteke.
  4. Označiti: Označava određenu točku u povijesti, često se koristi za izdanja.

Ovi objekti stvaraju integritet i nepromjenjivost Gita, osiguravajući da je svaki commit jedinstveno prepoznatljiv putem SHA-1 hash-a.


5) Koja je razlika između Git fetch i Git pull?

git fetch preuzima promjene iz udaljenog repozitorija, ali ih ne spaja automatski. Ažurira vašu lokalnu udaljenutrackraljevske grane.

git pull izvodi i dohvaćanje i spajanje u jednom koraku.

naredba Description Koristite slučaj
git fetch Preuzimanja promjena bez spajanja Kada želite pregledati ažuriranja prije spajanja
git pull Automatski preuzima i spaja promjene Kada želite trenutnu sinkronizaciju

Primjer: Koristiti git fetch prilikom suradnje kako bi se pregledale promjene drugih prije spajanja.


6) Kako Git osigurava integritet podataka?

Git osigurava integritet podataka putem SHA-1 raspršivanjeSvaki commit, stablo i blob identificiran je jedinstvenim hashom od 40 znakova. To jamči da čak i promjena jednog bita mijenja hash, sprječavajući oštećenje ili neovlašteno mijenjanje.

Osim toga, Git koristi usmjereni aciklički graf (DAG) struktura gdje commitovi referenciraju svoje nadređene commite, osiguravajući dosljednost i tracmoguća povijest.

Primjer: Ako se sadržaj datoteke promijeni, mijenja se i njezina SHA-1 vrijednost, pa je Git odmah prepoznaje kao novu verziju.


7) Objasnite Git Rebase i kako se razlikuje od Git Merge-a.

Oboje git merge i git rebase integriraju promjene iz jedne grane u drugu, ali se razlikuju u pristupu.

  • Sjediniti: Stvara novi commit za spajanje koji kombinira povijesti.
  • Ponovno baziranje: Premješta ili ponovno reproducira commitove iz jedne grane u drugu, stvarajući linearnu povijest.
Faktor Spojiti Prebazirati
Povijest potvrda Nelinearna linearan
Novi commit kreiran Da Ne
Koristite slučaj Čuva povijest Povijest čistača

Primjer: Koristiti git rebase za održavanje čiste povijesti projekta, dok git merge je bolje za dijeljene javne grane.


8) Što su Git hookovi i koje su njihove prednosti?

Git hookovi su prilagođeni skripti koje pokreću određeni Git događaji poput commitova, spajanja ili pushova. Pomažu u provođenju standarda kodiranja i automatizaciji tijekova rada.

Vrste udica:

  • Klijentske kuke: Izvršavanje na lokalnim operacijama (npr. prethodno potvrđivanje).
  • Kuke na strani poslužitelja: Izvođenje na radnjama udaljenog repozitorija (npr. prethodno primanje).

Prednosti:

  • Spriječite commite s greškama u formatiranju.
  • Automatizirajte linting ili testiranje koda.
  • Osigurajte dosljedne tijekove rada u svim timovima.

Primjer: A pre-commit Hook može odbaciti commitove ako jedinični testovi ne uspiju.


9) Koje su prednosti i nedostaci korištenja Gita?

Aspekt Prednosti Nedostaci
Izvođenje Brzo i učinkovito za grananje/spajanje Može biti složeno za početnike
Kolaboracija Omogućuje distribuirani razvoj Potencijalni sukobi spajanja
Fleksibilnost Radi izvan mreže Zahtijeva postavljanje i učenje
Čuvanje Bavi se velikim projektima Skladištenje može brzo rasti

Sveukupno, Gitov distribuirani model, integritet podataka i fleksibilnost čine ga industrijskim standardom, unatoč krivulji učenja za nove programere.


10) Kako rješavate konflikte spajanja u Gitu?

Konflikti spajanja nastaju kada Git ne može automatski uskladiti promjene između grana.

Koraci za rješavanje:

  1. Identificirajte konfliktne datoteke pomoću git status.
  2. Otvorite datoteku, pronađite oznake sukoba (<<<<<<<, =======, >>>>>>>).
  3. Ručno uredite datoteku kako biste odabrali ili kombinirali promjene.
  4. Pripremite datoteku pomoću git add.
  5. Potvrdi riješeno spajanje s git commit.

Primjer: Kada dva programera uređuju isti redak u datoteci na različitim granama, Git tijekom spajanja stvara konflikt, što zahtijeva ručno rješavanje.


11) Koja je razlika između git resetiranja, git reverta i git checkouta?

Ove tri naredbe mijenjaju povijest Gita na različite načine i služe različitim svrhama.

naredba funkcija Utjecaj podataka Koristite slučaj
git reset Pomiče HEAD pokazivač unatrag na određeni commit Povijest potvrđivanja promjena Lokalno poništavanje potvrda
git revert Stvara novi commit koji poništava prethodne promjene Čuva povijest commita Sigurno poništavanje commitova u dijeljenim granama
git checkout Prebacuje grane ili vraća datoteke Ne utječe na povijest commita Premještanje između grana ili odbacivanje lokalnih promjena

Primjer: Ako ste greškom dali osjetljive podatke, koristite git revert sigurno poništiti bez mijenjanja povijesti commita.

Koristiti git reset --hard samo za lokalne korekcije prije guranja.


12) Objasnite vrste resetiranja u Gitu.

Git nudi tri glavne vrste resetiranja ovisno o tome koliko daleko unatrag želite poništiti promjene.

Tip naredba Ponašanje
Nježno git reset --soft <commit> Pomiče HEAD, ali zadržava indeks i radni direktorij netaknutima
Mješovit git reset --mixed <commit> Pomiče HEAD i resetira indeks; promjene ostaju u radnom direktoriju
Tvrd git reset --hard <commit> Potpuno resetira HEAD, indeks i radni direktorij

Primjer: Ako ste prerano potvrdili promjene, git reset --soft HEAD~1 omogućuje vam ponovni unos nakon izmjene.


13) Što je Git Stash i kada ga trebate koristiti?

git stash privremeno pohranjuje nepotvrđene promjene, omogućujući vam promjenu grana bez gubitka rada.

Ovo je posebno korisno tijekom obavljanja više zadataka istovremeno ili kada hitno trebate pregledati drugu poslovnicu.

Uobičajene naredbe:

  • git stashSprema vaše lokalne izmjene.
  • git stash popVraća spremljene promjene.
  • git stash list: Prikazuje sve spremljene zalihe.

Primjer: Ako ste na pola puta implementacije značajke i pojavi se problem u produkciji, spremite promjene, ispravite problem, a zatim ponovno primijenite spremljeni rad.


14) Kako Git rukuje udaljenim repozitorijima?

Udaljeni repozitorij u Gitu je verzija vašeg projekta smještena na internetu ili mreži, koja se koristi za suradnju među programerima.

Uobičajene daljinske naredbe:

naredba Description
git remote add origin <url> Povezuje lokalno spremište s udaljenim
git push Šalje commite u udaljeni repozitorij
git pull Dohvaća i spaja promjene
git fetch Dohvaća, ali ne spaja promjene

Primjer: Programeri obično kloniraju udaljeni repozitorij s platformi poput GitHuba ili GitLaba kako bi doprinijeli zajedničkim projektima.


15) Što su Git oznake i zašto su važne?

Oznake su pokazivači na određene commite, često se koriste za označavanje točaka izdanja (npr. v1.0, v2.1).

Oni pružaju stabilnost referenciranjem nepromjenjivih verzija kodne baze.

Vrste oznaka:

  1. Lagane oznake: Jednostavne reference commita.
  2. Oznake s bilješkama: Pohrani metapodatke (autor, poruka, datum).
naredba Svrha
git tag v1.0 Stvara laganu oznaku
git tag -a v2.0 -m "Release 2.0" Stvara oznaku s bilješkama
git push origin --tags Šalje sve oznake na udaljeni uređaj

Primjer: Timovi za izdavanje koriste anotirane oznake za pakiranje i implementaciju stabilnih verzija proizvoda.


16) Što je Git Cherry-Pick i kako je koristan?

git cherry-pick omogućuje selektivnu integraciju specifičnih commitova iz jedne grane u drugu.

Ovo je korisno kada želite primijeniti određeni ispravak programske pogreške ili značajku bez spajanja cijele grane.

Primjer: Možete primijeniti popravak iz feature/bugfix do main pomoću:

git cherry-pick <commit-hash>

Prednosti:

  • Precizna kontrola nad integracijom commita.
  • Izbjegava nepotrebna spajanja koda.
  • Održava čišću povijest u kritičnim granama.

17) Što je Git Squash i koje su njegove prednosti?

Squashing u Gitu kombinira više commitova u jedan, stvarajući pojednostavljenu i čišću povijest commitova.

Naredba:

git rebase -i HEAD~3

Zatim odaberite squash opcija za commite koje želite spojiti.

Prednosti:

  • Stvara sažetu povijest.
  • Olakšava pregled zahtjeva za povlačenjem.
  • Smanjuje nered od manjih promjena.

Primjer: Prije spajanja feature grane, programeri često sve male commitove sažmu u jedan, smislen commit.


18) Kako možete vratiti potisnuti commit u Gitu?

Nakon što se commit pošalje u udaljeni repozitorij, ne može se sigurno izbrisati, ali se može vratiti u prethodno stanje pomoću:

git revert <commit-hash>
git push origin main

Razlika između resetiranja i Revert:

Faktor Reset RevERT
Povijest Prepisuje povijest Čuva povijest
Sigurnosni Nije sigurno za dijeljene repozitorije Sigurno za javne podružnice
Upotreba Lokalno poništavanje Daljinsko poništavanje

Primjer: Ako se pogrešan commit već nalazi na GitHubu, koristite git revert umjesto git reset održavati dosljednu zajedničku povijest.


19) Koja je razlika između Gita i GitHuba?

Git je a alat za kontrolu verzija, dok je GitHub platforma utemeljena na oblaku za hosting Git repozitorija.

Aspekt ići GitHub
Priroda Alat naredbenog retka Usluga temeljena na webu
funkcija Tracks kod se mijenja lokalno Omogućuje udaljenu suradnju
Internet zahtjev Izborni potreban
Svojina Otvoreni kod (od Linusa Torvalds) Vlasnik Microsoft

Primjer: Programer koristi Git za lokalno upravljanje verzijama izvornog koda i GitHub za dijeljenje i pregled koda s članovima tima.


20) Koje su različite strategije spajanja u Gitu?

Git nudi različite strategije spajanja ovisno o tome kako želite kombinirati promjene.

Strategija Description Koristite slučaj
Ponavljajući Zadano; spaja dvije grane Standardna spajanja
Medvjed Zadržava promjene trenutne grane Odbacivanje dolaznih promjena
Njihovo Čuva promjene dolazne grane Nadjačavanje lokalnih promjena
Hobotnica Spaja više grana istovremeno Integracijske grane

Primjer: Tijekom složenih integracija, programeri mogu koristiti recursive strategija za standardna spajanja ili ours dati prioritet lokalnim promjenama.


21) Što je odvojena glava (Detached HEAD) u Gitu i kako se to ispravlja?

A odvojena GLAVA nastaje kada HEAD Pokazivač ne pokazuje na granu već na određeni commit. To se događa kada izravno provjerite raniji commit koristeći:

git checkout <commit-hash>

U ovom stanju, svi novi commiti nisu povezani s granom i mogu se izgubiti ako nisu ispravno referencirani.

Kako popraviti:

  1. Stvorite novu granu iz odvojenog stanja:
    git checkout -b temp-branch
  2. Zatim izvršite commit ili merge kao i obično.

Primjer: Prilikom testiranja starije verzije koda, možete unijeti odvojenu HEAD naredbu. Uvijek stvorite granu kako biste zadržali promjene.


22) Koja je svrha git reflog-a i kada ga treba koristiti?

git reflog je moćna naredba koja tracks sve pokrete HEAD pokazivač, čak i one koji nisu dio vidljive povijesti grana. Djeluje kao sigurnosna mreža za oporavak izgubljenih commitova.

Upotreba:

git reflog
git checkout <commit-hash>

Primjer:

Ako slučajno trčite git reset --hard i izgubiti nedavne promjene, git reflog omogućuje vam da ih pronađete i vratite.

Prednosti:

  • Oporavlja izgubljeni rad nakon lošeg ponovnog baziranja ili resetiranja.
  • Pruža detaljnu povijest navigacije prilikom commita.
  • Povećava sigurnost u složenim radnim procesima.

23) Objasnite Git podmodule i njihove slučajeve upotrebe.

A Git podmodul Omogućuje vam uključivanje jednog Git repozitorija kao podmape unutar drugog. Koristi se pri upravljanju projektima koji ovise o drugim repozitorijima.

Uobičajene naredbe:

git submodule add <repo-url>
git submodule update --init

Primjer: Web aplikacija može uključivati ​​dijeljeni modul za autentifikaciju kao Git podmodul na više projekata.

Prednosti Nedostaci
Promoponovno korištenje tog koda Može zakomplicirati CI/CD cjevovode
Održava neovisne povijesti Zahtijeva ručna ažuriranja
Osigurava konzistentnost verzija Viša krivulja učenja

24) Što su Git tijekovi rada i koje su različite vrste?

Gitovi tijekovi rada definiraju strukturirani pristup koji timovi koriste za suradnju s Gitom. Najpopularnije vrste su:

Workflow Description Koristite slučaj
Gitov tok Koristi grane za značajke, razvoj i objavu Projekti velikih razmjera
GitHub Flow Pojednostavljeni tijek korištenjem glavnih i značajnih grana Kontinuirana implementacija
GitLab Flow Kombinira Git Flow s CI/CD integracijom DevOps-orijentirani projekti
Trunk-based Programeri se obvezuju na jednu zajedničku granu Agilni, brzi timovi za isporuku

Primjer: Startupi često usvajaju Trunk-based tijekove rada radi brzine, dok poduzeća preferiraju Gitov tok za kontrolirana ispuštanja.


25) Što je Git Bisect i kako pomaže u otklanjanju pogrešaka?

git bisect je moćan alat za otklanjanje pogrešaka koji koristi binarno pretraživanje za identifikaciju commita koji je uveo grešku.

Primjer tijeka rada:

  1. Početak bisekcije: git bisect start
  2. Označi trenutni commit kao loš: git bisect bad
  3. Označi zadnji poznati ispravan commit: git bisect good <commit>
  4. Git automatski provjerava središnju točku.
  5. Testiraj i nastavi dok se ne pronađe neispravan commit.

Prednosti:

  • Ubrzava bug tracu velikim kodnim bazama.
  • Smanjuje ručnu provjeru commita.
  • Idealno za CI/CD regresijsko testiranje.

26) Koja je razlika između Git Merge Conflict-a i Rebase Conflict-a?

Oba se javljaju kada Git ne može automatski uskladiti razlike u kodu, ali se javljaju u različitim kontekstima.

Tip Kada se dogodi Rezolucija
Sukob spajanja Za vrijeme git merge između grana Rješavanje u ciljnoj grani
Sukob ponovnog baziranja Za vrijeme git rebase tijekom ponovnog izvođenja commitova Riješi prilikom ponovnog baziranja, a zatim nastavi s git rebase --continue

Primjer: Ako se isti redak uređuje drugačije u dvije grane, dolazi do sukoba spajanja; tijekom ponovnog baziranja, slične promjene također pokreću sukobe ponovnog baziranja.


27) Kako se Git može integrirati u CI/CD cjevovode?

Git čini temelj modernih CI/CD tijekova rada pokretanjem automatiziranih procesa pri svakom commitu ili pull requestu.

Primjer integracije:

  • Potvrdi slanje → Pokreće CI cjevovod (putem Jenkins, GitHub akcije ili GitLab CI).
  • Izradi i testiraj → Automatizirani testovi validiraju commit.
  • razviti → Promjene se šalju u pripravu ili produkciju.

Prednosti:

  • Osigurava dosljedne implementacije.
  • Omogućuje brze cikluse povratnih informacija.
  • Smanjuje ljudske pogreške u izdanjima.

Primjer: GitHub Actions mogu automatski testirati i implementirati projekt kada se promjene proslijede u main podružnica.


28) Koja je razlika između git clean i git reset?

naredba Svrha Djelokrug Primjer
git clean Uklanja untracked datoteke Radni imenik git clean -f -d
git reset Pomiče pokazivač HEAD Commiti, indeks i radno stablo git reset --hard HEAD~1

Primjer: Ako vaš radni prostor ima privremene ili generirane datoteke koje nisu trackreirano od strane Gita, koristite git cleanAko trebate poništiti promjene, koristite git reset.

Savjet: Uvijek pregledajte s git clean -n prije izvršavanja kako biste izbjegli slučajno brisanje.


29) Što je Git Reflog u odnosu na Git Log?

Iako oba prikazuju povijest commitova, služe različitim svrhama.

naredba Tracks Uključuje izbrisane commite Koristite slučaj
git log Vidljiva povijest commita Ne Revpregled napretka projekta
git reflog Svi pokreti GLAVE Da Oporavak izgubljenih commitova

Primjer: Nakon što slučajno izbrišete granu, možete koristiti git reflog kako bi se pronašao i oporavio njegov posljednji commit, koji se ne bi pojavio u git log.


30) Koje su neke najbolje prakse za učinkovito korištenje Gita u velikim timovima?

  1. Koristite konvencije imenovanja grana: Slijedite obrazac poput feature/login-ui or bugfix/payment.
  2. Često, ali smisleno, obvezujte se: Neka svaki commit bude usmjeren na jednu logičku promjenu.
  3. Pisati DescriptPoruke potvrđivanja ive: Koristite imperativno raspoloženje, npr. "Fix user login validation."
  4. Rebase prije spajanja: Održava povijest commita čistom.
  5. Koristite zahtjeve za povlačenjem za Revmišljenja: Promosuradnja na testovima i kvaliteta koda.
  6. Dosljedno objavljivanje oznaka: Pomaže u kontroli verzija i vraćanju na prethodno stanje.
  7. Automatizirajte testiranje putem CI/CD-a: Osigurava stabilnu integraciju i brža izdanja.

Primjer: U razvoju poduzeća, strukturirano korištenje Gita sprječava sukobe i pojednostavljuje upravljanje izdanjima.


31) Što je Git Internals i kako Git pohranjuje podatke?

Gitovi interni dijelovi odnose se na arhitekturu niske razine koja pokreće Gitove funkcionalnosti. Git pohranjuje sve (datoteke, direktorije, commite) kao predmeti u .git/objects direktorij. Ovi objekti su identificirani pomoću SHA-1 hashevi i kategorizirane kao blobovi, stabla, commiti i oznake.

Životni ciklus pohrane podataka:

  1. Kada se doda datoteka, njen sadržaj se pohranjuje kao blob.
  2. A tree struktura datoteka mapa.
  3. A commit povezuje stabla i metapodatke.
  4. A tag referencira commite za izdanja.

Primjer: Trčanje git cat-file -p <hash> omogućuje vam direktan pregled Git objekata.

Ovaj dizajn osigurava integritet podataka, verzija traclakoćai lagana izvedba, što Git čini vrlo učinkovitim u usporedbi sa starijim sustavima poput SVN-a.


32) Koja je razlika između Git Rebase Interactive i Git Merge?

Faktor Interaktivno rebaziranje Gita (git rebase -i) Git spajanje
Svrha Omogućuje uređivanje, promjenu redoslijeda i skupljanje commitova Kombinira povijesti
Povijest Prepisuje povijest Čuva sve commite
Koristite slučaj Čišćenje prije spajanja Održavanje izvorne vremenske linije

Primjer: Prije spajanja grane značajki, programer može koristiti:

git rebase -i main

kako bi se uklonile nepotrebne izmjene i stvorila čišća, linearna povijest.

Spojiti sigurnije je za kolaborativne grane, dok prebazirati poboljšava čitljivost za privatne razvojne tijekove rada.


33) Što je Sparse Checkout u Gitu i koje su njegove prednosti?

Rijetka blagajna omogućuje programerima kloniranje ili rad samo s podskupom datoteka iz velikog repozitorija, smanjujući korištenje lokalne pohrane i ubrzavajući operacije.

naredbe:

git clone --no-checkout <repo-url>
git sparse-checkout init --cone
git sparse-checkout set <folder-path>

Prednosti:

  • Poboljšava performanse u monorepozitorijama.
  • Smanjuje korištenje diska.
  • Idealno za mikroservisne arhitekture.

Primjer: U velikom poslovnom projektu, programerima će možda trebati samo /frontend mapa. Sparse Checkout preuzima samo taj direktorij, izbjegavajući nepotrebne gigabajte pozadinskog koda.


34) Što je plitki klon i kada ga treba koristiti?

A Plitki klon preuzima samo dio povijesti repozitorija, što kloniranje čini puno bržim.

Naredba:

git clone --depth=1 <repo-url>

Prednosti:

  • Smanjuje vrijeme kloniranja za velike repozitorije.
  • Štedi propusnost i prostor na disku.
  • Korisno za CI cjevovode kojima su potrebne samo nedavne izmjene (commit-ovi).

Nedostaci:

  • Ne može se pristupiti starijim commitovima ili ponovno bazirati izvan dohvaćene dubine.
  • Ograničena vidljivost povijesti.

Primjer: CI/CD sustavi često koriste plitke klonove za brzo dohvaćanje najnovije verzije koda za automatizirane izgradnje bez potpune povijesti commit-a.


35) Što je Git LFS (pohrana velikih datoteka) i zašto se koristi?

git-lfs (Large File Storage) je proširenje koje zamjenjuje velike datoteke (npr. slike, skupove podataka, binarne datoteke) laganim tekstualnim pokazivačima unutar Gita, dok stvarni sadržaj pohranjuje na udaljeni LFS poslužitelj.

Primjer naredbe:

git lfs install
git lfs track "*.zip"

Prednosti:

  • Održava repozitorij laganim.
  • Poboljšava performanse s velikim binarnim datotekama.
  • Besprijekorno radi s GitHubom, GitLabom i Bitbucket.

Primjer: Timovi za razvoj igara koriste Git LFS za rukovanje velikim 3D resursima bez usporavanja normalnih Gitovih operacija.


36) Kako možete konfigurirati Git za optimalne performanse?

Brzinu i upotrebljivost Gita možete poboljšati finim podešavanjem konfiguracijskih parametara.

Najbolje prakse:

  • Omogući kompresiju: git config --global core.compression 9
  • Postavi automatsko GC (odvoz smeća): git gc --auto
  • Koristite paralelno dohvaćanje (v2.31+): git config --global fetch.parallel 4
  • Omogući keširanje vjerodajnica: git config --global credential.helper cache

Primjer: Za repozitorije na razini poduzeća, optimizacija Gitovih postavki dohvaćanja i kompresije značajno smanjuje latenciju kloniranja i povlačenja, poboljšavajući produktivnost u distribuiranim timovima.


37) Što je potpisivanje commita (GPG) u Gitu i zašto je važno?

Upotreba potpisivanja commita GPG (GNU-ova zaštita privatnosti) kriptografski provjeriti autentičnost commitova, osiguravajući da promjene dolaze od pouzdanih suradnika.

Primjer postavljanja:

git config --global user.signingkey <GPG-key>
git commit -S -m "Signed commit"

Prednosti:

  • Sprječava neovlaštene ili lažno kreirane commite.
  • Poboljšava sigurnost i mogućnost revizije repozitorija.
  • Gradi organizacijsko povjerenje.

Primjer: Projekti otvorenog koda često zahtijevaju GPG-potpisane commite kako bi se potvrdila autentičnost doprinosa vanjskih programera.


38) Kako Git drugačije rukuje binarnim datotekama od tekstualnih datoteka?

Git je optimiziran za izvorni kod temeljen na tekstu i tracks promjene redak po redak, što ne funkcionira dobro za binarne datoteke. Binarne datoteke pohranjuju se kao pojedinačni blobovi — svaka modifikacija stvara novu verziju, a ne razliku.

Vrsta datoteke Učinkovitost pohrane Podrška za razlike Preporučeno rukovanje
Tekst Vrlo učinkovit Da Zadani Git
Binarni neefikasan Ne Koristite Git LFS

Primjer: Za repozitorije s puno slika, omogućavanje Git LFS-a sprječava smanjenje performansi uzrokovano čestim ažuriranjima binarnih datoteka.


39) Kako rješavate uobičajene probleme s Gitom poput odvojenog HEAD-a ili pogrešaka spajanja?

Uobičajeni problemi i rješenja:

Izdanje Izazvati Riješenje
Odvojena GLAVA Odjava određenog commita Stvorite granu s git checkout -b new-branch
Sukob spajanja Sukobljene izmjene u datotekama Ručno riješite, a zatim git add i git commit
Izgubljene potvrde Slučajno resetiranje ili ponovno pokretanje baze Koristiti git reflog oporaviti
Pošalji odbijen Udaljena ažuriranja predstoje Povucite ili premjestite bazu prije guranja

Primjer: Kada se pojave pogreške koje se ne premotavaju unaprijed, to obično znači da postoje udaljene promjene - koristite git pull --rebase sinkronizirati prije ponovnog pokušaja.


40) Koje su najbolje sigurnosne prakse za Git repozitorije?

  1. Koristite SSH ili HTTPS autentifikaciju: Izbjegavajte korištenje običnih vjerodajnica.
  2. Omogućite 2FA na Git hosting platformama.
  3. Izbjegavajte otkrivanje tajni ili ključeva: Koristiti .gitignore ili alate poput GitGuardiana.
  4. Potpišite commite s GPG ključevima.
  5. Ograniči kontrolu pristupa: Provoditi načela najmanjih privilegija.
  6. Koristite pravila zaštite grana za main or master.
  7. Redovito provodite revizije repozitorija.

Primjer: Tvrtke često integriraju tajno skeniranje i provode potpisane potvrde u CI/CD cjevovodima kako bi spriječile curenje podataka i neovlaštene promjene.


41) Kako automatizirati Git operacije pomoću shell-a ili Python skripte?

Git automatizacija poboljšava produktivnost i dosljednost u repetitivnim zadacima kao što su commit-ovi, spajanja i implementacije.

Primjer – Shell skripta:

#!/bin/bash
git add .
git commit -m "Auto commit on $(date)"
git push origin main

Primjer - Python Skripta (korištenje Gita)Python):

from git import Repo
repo = Repo('.')
repo.git.add(A=True)
repo.index.commit("Automated commit")
origin = repo.remote(name='origin')
origin.push()

Prednosti:

  • Smanjuje ručni napor.
  • Osigurava dosljedne obrasce potvrđivanja (commit).
  • Besprijekorno se integrira s CI/CD i DevOps procesima.

42) Što su Git Hookovi i kako se mogu koristiti u automatizaciji?

Git udice su skripte koje pokreću određeni Git događaji, a koriste se za provođenje pravila ili automatizaciju procesa.

Vrste udica:

Tip Radi dalje Primjer
Na strani klijenta Stroj programera pre-commit, prepare-commit-msg
Poslužiteljska strana Udaljeno spremište pre-receive, post-receive

Primjer: A pre-commit Hook može pokrenuti linter ili unit testove prije nego što dopusti commit.

Prednosti:

  • Održava kvalitetu koda.
  • Sprječava kršenje pravila.
  • Automatizira ponavljajuće zadatke validacije u tijekovima rada.

43) Kako biste migrirali projekt iz SVN-a ili Mercuriala u Git?

Migracija iz centraliziranih sustava kao što su SVN do ići uključuje strukturiranu konverziju kako bi se zadržala povijest commita.

Koraci:

  1. Instalirajte alate za migraciju: git svn or svn2git.
  2. Kloniraj SVN repozitorij:
    git svn clone <SVN_URL> --trunk=trunk --branches=branches --tags=tags
  3. Pretvori oznake i grane.
  4. Pošalji na udaljeni Git repozitorij (npr. GitHub).

Prednosti:

  • Omogućuje distribuirane tijekove rada.
  • Povećava performanse i fleksibilnost.
  • Pojednostavljuje grananje i spajanje.

Primjer: Organizacije koje migriraju sa starijih SVN sustava koriste svn2git sačuvati autorstvo i obvezati se na povijest.


44) Koje su razlike između Git Flow-a i Trunk-Based razvoja?

Aspekt Gitov tok Razvoj temeljen na glavnom kanalu
grananje Više grana (razvoj, objava) Jedna glavna grana
Model izdanja Fiksni ciklusi izdanja Kontinuirana implementacija
Složenost Umjereno do visoko Nizak
Najbolje za Veliki, stabilni timovi Agilni, brzi timovi

Primjer: Git Flow je najbolji za poslovne projekte s kontroliranim izdanjima, dok je Trunk-Based idealan za startupove ili mikroservise gdje je brzina ključna.

Usporedba prednosti:

  • Gitov tok: Stroga kontrola verzija.
  • Na temelju prtljažnika: Brža povratna informacija i usklađivanje CI/CD.

45) Koje strategije mogu optimizirati performanse Gita za vrlo velike repozitorije?

Za projekte na razini poduzeća s tisućama commitova ili suradnika, performanse Gita mogu se smanjiti ako se ne optimiziraju.

Ključne strategije optimizacije:

  1. Koristiti Plitki klonovi (--depth=1) za brže naplate.
  2. Koristiti Rijetka blagajna dohvatiti samo relevantne direktorije.
  3. trčanje Kolekcija smeća: git gc --aggressive.
  4. Podijelite monorepozitorije na podmodule ili mikroservise.
  5. Redovito komprimirajte objekte i pakirajte datoteke.

Primjer: U monorepozitorijumima većim od 10 GB, omogućavanje rijetke odjave i redovitog sakupljanja smeća drastično smanjuje vrijeme kloniranja i dohvaćanja.


46) Kako Git podržava kolaborativni razvoj u distribuiranim timovima?

Git omogućuje suradnju distribucijom potpunih kopija repozitorija među programerima. Svaki programer može lokalno slati promjene, slati ih na udaljene servere i spajati tuđi rad.

Primjer kolaborativnog tijeka rada:

  1. Forkuj repozitorij.
  2. Stvorite granu značajki.
  3. Pošalji promjene i otvori zahtjev za povlačenje.
  4. Revpogled i spajanje u main.

Prednosti:

  • Omogućuje paralelni razvoj značajki.
  • Smanjuje uska grla ovisnosti.
  • Podržava rad izvan mreže i fleksibilne tijekove rada.

Primjer: Suradnici otvorenog koda diljem svijeta surađuju asinkrono putem forkova i pull requesta smještenih na GitHubu.


47) Što je Git Garbage Collection i zašto je važan?

git gc (Sakupljanje smeća) čisti nepotrebne datoteke i optimizira pohranu u repozitoriju komprimiranjem objekata i uklanjanjem nedostupnih commitova.

Naredba:

git gc --aggressive --prune=now

Prednosti:

  • Oslobađa prostor na disku.
  • Poboljšava performanse repozitorija.
  • Smanjuje redundanciju u commit objektima.

Primjer: Programeri često pokreću git gc nakon višestrukih spajanja ili brisanja grana kako bi se održalo zdravlje repozitorija, posebno u projektima dugog vijeka trajanja.


48) Što je Git Blame i kako se koristi za otklanjanje pogrešaka?

git blame identificira koji je commit i autor zadnji put izmijenio svaki redak datoteke.

Primjer naredbe:

git blame app.py

Upotrijebite slučajeve:

  • Tracuvođenje grešaka.
  • Utvrđivanje vlasništva nad dijelovima koda.
  • Revizija promjena za odgovornost.

Primjer: Ako je funkcija počela otkazivati ​​nakon nedavnog ažuriranja, git blame može točno odrediti specifični commit i programera koji je napravio promjenu, što pomaže bržem otklanjanju pogrešaka.


49) Koja je razlika između forkinga i kloniranja u Gitu?

Faktor Viljuška klon
Definicija Kopija repozitorija pod vašim računom na hosting servisu Lokalna kopija repozitorija
Lokacija Na strani poslužitelja (npr. GitHub) Stroj programera
Koristite slučaj Doprinos drugom projektu Lokalni razvoj
Odnos Povezano putem zahtjeva za povlačenjem Izravna sinkronizacija s daljinskim upravljačem

Primjer: Kada doprinosite projektima otvorenog koda, stvarate "fork" repozitorij, vršite promjene lokalno nakon kloniranja i šaljete zahtjev za povlačenjem (pull request) na pregled.


50) Koje su najčešće Gitove greške i kako ih izbjeći?

Pogreška Description Prevencija
Izdavanje osjetljivih podataka Uključeni tajni podaci ili vjerodajnice Koristiti .gitignore ili GitGuardian
Prisilno slanje na dijeljene grane Prepisuje tuđi rad Koristiti --force-with-lease
Veliki binarni commiti Usporava performanse repozitorija Koristite Git LFS
Preskočitiping recenzije kodova Vodi do loše kvalitete Koristite zahtjeve za povlačenjem
Ignoriranje sukoba rebaseiranja Uzroci spajanja kaosa Pažljivo riješite sukobe prije nego što ih gurnete

Primjer: Programer je slučajno gurnuo .env datoteka s vjerodajnicama može otkriti osjetljive podatke; to se može izbjeći pomoću .gitignore pravila i pre-commit hooks-ove.

🔍 Najčešća pitanja na intervjuu za GIT sa stvarnim scenarijima i strateškim odgovorima

1) Što je Git i kako se razlikuje od drugih sustava za kontrolu verzija?

Očekivano od kandidata: Anketar želi procijeniti vaše razumijevanje osnova Gita i njegovih prednosti u odnosu na centralizirane sustave.

Primjer odgovora: Git je distribuirani sustav za kontrolu verzija koji omogućuje programerima da track promjena u svojoj kodnoj bazi i učinkovito surađuju. Za razliku od centraliziranih sustava poput SVN-a, Git omogućuje svakom programeru da ima potpunu kopiju repozitorija, uključujući njegovu povijest. Ova struktura podržava rad izvan mreže, brže operacije i bolje mogućnosti grananja i spajanja.


2) Možete li objasniti razliku između git fetch, git pull i git merge?

Očekivano od kandidata: Anketar provjerava vaše znanje o uobičajenim Git naredbama i njihovoj namjeni.

Primjer odgovora: git fetch preuzima nove podatke iz udaljenog repozitorija, ali ih ne integrira u vašu trenutnu granu. git pull izvodi dohvaćanje nakon čega slijedi automatsko spajanje, integrirajući nove commite. git merge koristi se za ručno kombiniranje promjena iz jedne grane u drugu nakon dohvaćanja ažuriranja.


3) Opišite situaciju u kojoj ste morali riješiti sukob spajanja. Kako ste to riješili?

Očekivano od kandidata: Ispitivač želi znati više o vašim vještinama rješavanja sukoba i sposobnosti upravljanja suradničkim tijekovima rada.

Primjer odgovora: U mojoj prošloj ulozi, često smo radili na zajedničkim granama, što je ponekad dovodilo do sukoba spajanja. Kad bih naišao na jedan, koristio bih git status identificirati konfliktne datoteke i pregledati obje verzije kako bih odlučio koje promjene zadržati. Nakon uređivanja i testiranja datoteka, označio sam konflikt kao riješen i potvrdio promjene. Također sam komunicirao s timom kako bih u budućnosti izbjegao slične probleme poboljšanjem praksi upravljanja podružnicama.


4) Kako koristite strategije grananja u Gitu za upravljanje projektima?

Očekivano od kandidata: Anketar želi vidjeti razumijete li strukturirane tijekove rada poput Git Flowa ili razvoja temeljenog na trunkovima.

Primjer odgovora: Obično koristim Git Flow strategiju koja uključuje main, developi grane značajki. Grane značajki stvaraju se za svaki novi zadatak, spajaju se u develop nakon završetka, a zatim testiran prije spajanja u mainOva metoda osigurava kontroliranu integraciju i čiste cikluse izdavanja.


5) Koje biste korake poduzeli ako biste slučajno povjerili osjetljive podatke u Git repozitorij?

Očekivano od kandidata: Ispitivač procjenjuje vašu sposobnost učinkovitog reagiranja na sigurnosni problem ili problem usklađenosti.

Primjer odgovora: Prvo bih uklonio osjetljivu datoteku pomoću git rm --cached i potvrditi promjenu. Zatim bih koristio alate poput git filter-branch or BFG Repo-Cleaner kako bih uklonio informacije iz povijesti. Konačno, rotirao bih sve izložene vjerodajnice i obavijestio relevantne dionike kako bih spriječio potencijalne rizike.


6) Kako osiguravate konzistentnost koda kada više programera istovremeno izvršavaju commit?

Očekivano od kandidata: Anketar želi razumjeti kako održavate integritet koda u kolaborativnim okruženjima.

Primjer odgovora: Na mom prethodnom poslu implementirali smo politiku koja je zahtijevala da svi commit-ovi prođu pull request-ove i code review-e. Automatizirane CI provjere osigurale su da se spaja samo testirani i pregledani kod. Ovaj pristup održavao je kvalitetu i dosljednost u svim granama.


7) Kako biste vratili commit koji je već poslan na zajedničku granu?

Očekivano od kandidata: Anketar želi znati razumijete li kako sigurno upravljati pogreškama u zajedničkom repozitoriju.

Primjer odgovora: Najsigurnija metoda je korištenje git revert <commit_id>, što stvara novi commit koji poništava promjene iz navedenog commita. Time se održava povijest projekta i izbjegava ometanje drugih programera, za razliku od git reset, koji prepisuje povijest.


8) Recite mi o situaciji kada ste morali upravljati s više podružnica za različita izdanja.

Očekivano od kandidata: Anketar želi uvid u vašu sposobnost upravljanja složenošću u kontroli verzija.

Primjer odgovora: U mojoj prethodnoj ulozi, održavali smo više verzija izdanja za klijente. Koristio sam odvojene grane izdanja za svaku verziju i primjenjivao kritične ispravke koristeći cherry-pick. To je osiguralo da se ažuriranja primjenjuju dosljedno bez uvođenja regresija u novijim verzijama.


9) Kako se nosite s velikim repozitorijima s mnogo suradnika kako biste održali optimalne performanse?

Očekivano od kandidata: Anketar procjenjuje vaše znanje o učinkovitom skaliranju Gita.

Primjer odgovora: Potičem plitko kloniranje (--depth) za brži pristup i korištenje .gitignore kako bismo isključili nepotrebne datoteke. Također redovito uklanjamo stare grane i koristimo Git LFS (Large File Storage) za binarne datoteke. Ovi koraci održavaju repozitorij učinkovitim i upravljivim.


10) Opišite scenarij u kojem ste morali otkloniti greške u Gitu koje su poremetile razvoj. Kakav je bio vaš pristup?

Očekivano od kandidata: Ispitivač želi vidjeti vaše analitičko razmišljanje i vještine rješavanja problema.

Primjer odgovora: Na prethodnoj poziciji, povijest grana člana tima je oštećena zbog neispravnog ponovnog baziranja. Istražio sam koristeći git log i git reflog do tracproblem. Zatim sam vratio ispravne commite koristeći git cherry-pick i osigurali su da su sve lokalne podružnice sinkronizirane s fiksnom udaljenom verzijom. To je spriječilo daljnje prekide i održalo produktivnost tima.

Sažmite ovu objavu uz: