50 najpopularniejszych pytaƄ i odpowiedzi na rozmowie kwalifikacyjnej GIT (2026)

Przygotowujesz się do rozmowy kwalifikacyjnej na stanowisko GIT? Czas poznać kluczowe pytania, które sprawdzą Twoją wiedzę z zakresu kontroli wersji. Pytania do rozmowy kwalifikacyjnej GIT pomaga odkryć gƂębokoƛć rozwiązywania problemów, nawyki wspóƂpracy i efektywnoƛć zarządzania przepƂywem pracy.

Kariera w obszarze kontroli wersji i wspóƂpracy oferuje ogromne moĆŒliwoƛci dla specjalistĂłw z bogatym doƛwiadczeniem technicznym i wiedzą specjalistyczną. ZarĂłwno początkujący, jak i doƛwiadczeni inĆŒynierowie, opanowując powszechnie znane i zaawansowane koncepcje, pomagają im radzić sobie z trudnymi pytaniami i odpowiedziami. Praca w terenie rozwija umiejętnoƛci analityczne, pracę zespoƂową i praktyczną wiedzę techniczną, cenioną przez menedĆŒerĂłw i liderĂłw zespoƂów.

W przewodniku tym wykorzystano spostrzeĆŒenia ponad 75 profesjonalistĂłw, w tym liderĂłw technicznych, menedĆŒerĂłw i programistĂłw. Zebrano w nim najwaĆŒniejsze informacje na temat rozmĂłw kwalifikacyjnych GIT w rĂłĆŒnych branĆŒach, gwarantując wiarygodnoƛć, praktyczną dokƂadnoƛć i kompleksowe omĂłwienie zagadnieƄ dotyczących wszystkich poziomĂłw doƛwiadczenia.

Pytania i odpowiedzi na rozmowę kwalifikacyjną GIT

50 najlepszych pytaƄ i odpowiedzi na rozmowie kwalifikacyjnej na GIT

1) Czym jest Git i czym rĂłĆŒni się od innych systemĂłw kontroli wersji?

Git to rozproszony system kontroli wersji zaprojektowany w celu: track zmian w kodzie ĆșrĂłdƂowym podczas tworzenia oprogramowania. W przeciwieƄstwie do scentralizowanych systemĂłw, takich jak SVN czy CVS, Git pozwala kaĆŒdemu programiƛcie posiadać peƂną kopię repozytorium, Ƃącznie z jego peƂną historią. Ten zdecentralizowany model zwiększa szybkoƛć, elastycznoƛć i niezawodnoƛć.

PrzykƂad: Klonując repozytorium Git, moĆŒesz pracować w trybie offline i zatwierdzać zmiany lokalnie, w przeciwieƄstwie do systemu SVN, gdzie do kaĆŒdego zatwierdzenia wymagane jest poƂączenie z internetem.

Czynnik git SVN
Architektura Rozproszone scentralizowane
Prędkoƛć Szybciej Wolniej
Praca offline Utrzymany Nie jest obsƂugiwany
RozgaƂęzienie Lekki CiÄ™ĆŒki i powolny

👉 BezpƂatne pobieranie pliku PDF: Pytania i odpowiedzi na rozmowę kwalifikacyjną GIT


2) Wyjaƛnij przepƂyw pracy i cykl ĆŒycia pliku w systemie Git.

Cykl ĆŒycia pliku Git przedstawia, w jaki sposĂłb plik przechodzi przez rĂłĆŒne stany w repozytorium.

Pliki w Gicie mogą znajdować się w jednym z czterech podstawowych stanów: UntracKED, zmodyfikowany, Wystawiany na scenie, Zobowiązany.

  1. UntracpowiedziaƂ: Nowo utworzone pliki nie zostaƂy jeszcze dodane do Git.
  2. modyfikowany: Pliki, które zostaƂy edytowane od czasu ostatniego zatwierdzenia.
  3. Wystawiany na scenie: Pliki dodane za pomocą git add i gotowi do zaangaĆŒowania.
  4. ZaangaĆŒowany: Pliki zapisane trwale w repozytorium za pomocą git commit.

PrzykƂad: Programista tworzy nowy plik → uruchamia git add → a następnie zatwierdza. Ta sekwencja koƄczy cykl ĆŒycia pliku odtracchciaƂ być zaangaĆŒowany.


3) Jak dziaƂa rozgaƂęzianie i scalanie w Gicie?

RozgaƂęzienie pozwala wielu programistom pracować nad oddzielnymi funkcjami jednoczeƛnie, bez wpƂywu na gƂówną bazę kodu. KaĆŒda gaƂąĆș reprezentuje niezaleĆŒną linię rozwoju.

Scalenie polega na scalaniu zmian z jednej gaƂęzi z inną, zazwyczaj integrując gaƂęzie zawierające nowe funkcje z gaƂęzią gƂówną.

PrzykƂad: Jeƛli utworzysz feature/login gaƂąĆș, pracować nad nią niezaleĆŒnie, a następnie poƂączyć ją z main, bezpiecznie skonsolidujesz swoją nową funkcję.

Command Cel
git branch feature Tworzy nową gaƂąĆș
git checkout feature PrzeƂącza się na oddziaƂ
git merge feature Ɓączy się z gaƂęzią gƂówną

4) Jakie są rĂłĆŒne typy obiektĂłw Git?

Git przechowuje dane jako obiekty w swojej wewnętrznej bazie danych. Cztery gƂówne typy obiektów to:

  1. Kropelka: Przechowuje dane plikĂłw.
  2. Drzewo: Reprezentuje katalogi i struktury plikĂłw.
  3. PopeƂnić: Rejestruje zmiany wraz z metadanymi, takimi jak autor, data i zatwierdzenie nadrzędne.
  4. Tag: Oznacza konkretny moment w historii, często wykorzystywany do celów wydania.

Obiekty te zapewniają integralnoƛć i niezmiennoƛć Gita, gwarantując, ĆŒe kaĆŒde zatwierdzenie będzie jednoznacznie identyfikowalne za pomocą skrĂłtu SHA-1.


5) Jaka jest rĂłĆŒnica między poleceniami Git fetch i Git pull?

git fetch Pobiera zmiany ze zdalnego repozytorium, ale nie scala ich automatycznie. Aktualizuje lokalne zdalne repozytorium.tracgaƂęzie królewskie.

git pull wykonuje pobieranie i scalanie w jednym kroku.

Command OPIS Przypadek uĆŒycia
git fetch Pobieranie zmian bez scalania Gdy chcesz sprawdzić aktualizacje przed scaleniem
git pull Pobiera i scala zmiany automatycznie Kiedy chcesz natychmiastowej synchronizacji

PrzykƂad: Zastosowanie git fetch podczas wspóƂpracy w celu przejrzenia zmian wprowadzonych przez innych przed scaleniem.


6) W jaki sposób Git zapewnia integralnoƛć danych?

Git zapewnia integralnoƛć danych poprzez Haszowanie SHA-1KaĆŒde zatwierdzenie, drzewo i blob są identyfikowane za pomocą unikalnego 40-znakowego hasha. Gwarantuje to, ĆŒe nawet pojedyncza zmiana bitu zmienia hash, zapobiegając uszkodzeniu lub manipulacji.

Ponadto Git uĆŒywa skierowany graf acykliczny (DAG) struktura, w ktĂłrej zatwierdzenia odwoƂują się do zatwierdzenia nadrzędnego, zapewniając spĂłjnoƛć i tracmoĆŒliwa historia.

PrzykƂad: Jeƛli zawartoƛć pliku ulegnie zmianie, jego wartoƛć SHA-1 ulegnie zmianie, dzięki czemu Git natychmiast rozpozna ją jako nową wersję.


7) Wyjaƛnij Git Rebase i czym rĂłĆŒni się od Git Merge.

Obie git merge oraz git rebase integrują zmiany z jednej gaƂęzi do drugiej, ale rĂłĆŒnią się podejƛciem.

  • Ɓączyć: Tworzy nowe zatwierdzenie scalenia, ktĂłre Ƃączy historie.
  • Ponowne bazowanie: Przenosi lub odtwarza zatwierdzenia z jednej gaƂęzi do drugiej, tworząc liniową historię.
Czynnik Ɓączyć ZmieƄ bazę
Historia zobowiązaƄ Nieliniowy Liniowy
Utworzono nowe zatwierdzenie Tak Nie
Przypadek uĆŒycia Zachowuje historię Historia czystszego

PrzykƂad: Zastosowanie git rebase w celu utrzymania czystej historii projektu, podczas gdy git merge jest lepszy dla wspóƂdzielonych gaƂęzi publicznych.


8) Czym są haki Git i jakie są ich korzyƛci?

Haki Gita to niestandardowe skrypty uruchamiane przez okreƛlone zdarzenia Gita, takie jak zatwierdzenia, scalanie czy wypchnięcie. Pomagają one egzekwować standardy kodowania i automatyzować przepƂywy pracy.

Rodzaje haczykĂłw:

  • Haki po stronie klienta: Uruchamiaj operacje lokalne (np. przed zatwierdzeniem).
  • Haki po stronie serwera: Uruchamianie akcji zdalnego repozytorium (np. wstępne odbieranie).

Korzyƛci:

  • Zapobiegaj zatwierdzaniu zmian z bƂędami formatowania.
  • Zautomatyzuj analizę kodu lub testowanie.
  • Zapewnij spĂłjny przepƂyw pracy w obrębie zespoƂów.

PrzykƂad: A pre-commit hook moĆŒe odrzucać zatwierdzenia, jeƛli testy jednostkowe się nie powiodą.


9) Jakie są zalety i wady korzystania z Gita?

WYGLĄD Zalety Wady
Wydajnoƛć Szybkie i wydajne rozgaƂęzianie/scalanie MoĆŒe być skomplikowane dla początkujących
WspóƂpraca UmoĆŒliwia rozproszony rozwĂłj Potencjalne konflikty scalania
Elastycznoƛć DziaƂa offline Wymaga konfiguracji i nauki
Dyski Zajmuje się duĆŒymi projektami Pamięć masowa moĆŒe szybko rosnąć

OgĂłlnie rzecz biorąc, rozproszony model Gita, jego integralnoƛć danych i elastycznoƛć sprawiają, ĆŒe jest to branĆŒowy standard, mimo ĆŒe początkujący programiƛci muszą się z nim trochę pobawić.


10) Jak rozwiązywać konflikty scalania w Git?

Konflikty scalania występują, gdy Git nie moĆŒe automatycznie uzgadniać zmian między gaƂęziami.

Kroki rozwiązania:

  1. Zidentyfikuj pliki powodujące konflikt git status.
  2. OtwĂłrz plik, znajdĆș znaczniki konfliktu (<<<<<<<, =======, >>>>>>>).
  3. Edytuj plik ręcznie, aby wybrać lub poƂączyć zmiany.
  4. Przygotuj plik za pomocą git add.
  5. ZatwierdĆș rozwiązane scalenie za pomocą git commit.

PrzykƂad: Gdy dwĂłch programistĂłw edytuje tę samą linię w pliku znajdującym się w rĂłĆŒnych gaƂęziach, Git powoduje konflikt podczas scalania, ktĂłry wymaga ręcznego rozwiązania.


11) Jaka jest rĂłĆŒnica między poleceniami git reset, git revert i git checkout?

Te trzy polecenia modyfikują historię Git w rĂłĆŒny sposĂłb i sƂuĆŒÄ… rĂłĆŒnym celom.

Command Funkcjonować WpƂyw danych Przypadek uĆŒycia
git reset Przesuwa wskaĆșnik HEAD do tyƂu, do okreƛlonego zatwierdzenia Historia zatwierdzania zmian Cofnij zatwierdzenia lokalnie
git revert Tworzy nowe zatwierdzenie, które cofa poprzednie zmiany Zachowuje historię zatwierdzania Bezpieczne cofanie zatwierdzeƄ w gaƂęziach wspóƂdzielonych
git checkout PrzeƂącza gaƂęzie lub przywraca pliki Nie ma wpƂywu na historię zatwierdzania PrzechodĆș między gaƂęziami lub odrzucaj zmiany lokalne

PrzykƂad: Jeƛli przez pomyƂkę ujawniƂeƛ wraĆŒliwe dane, uĆŒyj git revert aby bezpiecznie cofnąć zmiany bez zmiany historii zatwierdzania.

Zastosowanie git reset --hard tylko do lokalnych korekt przed wypchnięciem.


12) Wyjaƛnij rodzaje resetów w Git.

Git udostępnia trzy gƂówne typy resetowania, w zaleĆŒnoƛci od tego, jak daleko wstecz chcesz cofnąć zmiany.

Typ Command Zachowanie
Miękki git reset --soft <commit> Przesuwa HEAD, ale zachowuje indeks i katalog roboczy w stanie nienaruszonym
Mieszany git reset --mixed <commit> Przesuwa HEAD i resetuje indeks; zmiany pozostają w katalogu roboczym
DuĆŒa git reset --hard <commit> CaƂkowicie resetuje HEAD, indeks i katalog roboczy

PrzykƂad: Jeƛli zatwierdziƂeƛ zmiany przedwczeƛnie, git reset --soft HEAD~1 pozwala na ponowne zatwierdzenie po modyfikacji.


13) Czym jest Git Stash i kiedy warto z niego korzystać?

git stash tymczasowo przechowuje niezatwierdzone zmiany, umoĆŒliwiając przeƂączanie gaƂęzi bez utraty pracy.

Jest to szczegĂłlnie przydatne podczas wykonywania wielu zadaƄ na raz lub gdy trzeba pilnie przejrzeć inną gaƂąĆș.

WspĂłlne polecenia:

  • git stash: Zapisuje lokalne modyfikacje.
  • git stash pop:Przywraca zapisane zmiany.
  • git stash list: Wyƛwietla wszystkie zapisane skrytki.

PrzykƂad: Jeƛli jesteƛ w poƂowie wdraĆŒania funkcji i pojawi się problem na etapie produkcji, zapisz zmiany, rozwiÄ…ĆŒ problem, a następnie ponownie zastosuj zapisaną pracę.


14) W jaki sposób Git obsƂuguje zdalne repozytoria?

Zdalne repozytorium w systemie Git to wersja projektu hostowana w Internecie lub sieci, wykorzystywana do wspóƂpracy między programistami.

Popularne polecenia zdalne:

Command OPIS
git remote add origin <url> Ɓączy lokalne repozytorium ze zdalnym
git push WysyƂa zatwierdzenia do zdalnego repozytorium
git pull Pobiera i scala zmiany
git fetch Pobiera, ale nie scala zmian

PrzykƂad: Programiƛci zazwyczaj klonują zdalne repozytorium z platform takich jak GitHub czy GitLab, aby móc wspóƂtworzyć wspóƂdzielone projekty.


15) Czym są tagi Git i dlaczego są waĆŒne?

Tagi wskazują na konkretne zatwierdzenia, często uĆŒywane do oznaczania punktĂłw wydania (np. v1.0, v2.1).

Zapewniają stabilnoƛć poprzez odwoƂywanie się do niezmiennych wersji bazy kodu.

Rodzaje tagĂłw:

  1. Tagi lekkie: Proste odwoƂania do commitów.
  2. Tagi adnotowane: Przechowuj metadane (autor, wiadomoƛć, data).
Command Cel
git tag v1.0 Tworzy lekki tag
git tag -a v2.0 -m "Release 2.0" Tworzy adnotowany tag
git push origin --tags Przenosi wszystkie tagi do urządzenia zdalnego

PrzykƂad: ZespoƂy odpowiedzialne za wydanie produktu korzystają z adnotowanych tagĂłw w celu pakowania i wdraĆŒania stabilnych wersji produktu.


16) Czym jest Git Cherry-Pick i do czego się przydaje?

git cherry-pick umoĆŒliwia selektywną integrację okreƛlonych commitĂłw z jednej gaƂęzi do innej.

Jest to przydatne, gdy chcesz zastosować konkretną poprawkę bƂędu lub funkcję bez scalania caƂej gaƂęzi.

PrzykƂad: MoĆŒesz zastosować poprawkę z feature/bugfix do main za pomocą:

git cherry-pick <commit-hash>

Korzyƛci:

  • Precyzyjna kontrola nad integracją commitĂłw.
  • Unika niepotrzebnego scalania kodu.
  • Utrzymuje czystszą historię w najwaĆŒniejszych gaƂęziach.

17) Czym jest Git Squash i jakie są jego korzyƛci?

Funkcja Squashing w Gicie Ƃączy wiele zatwierdzonych zmian w jedną, tworząc prostszą i bardziej przejrzystą historię zatwierdzonych zmian.

polecenie:

git rebase -i HEAD~3

Następnie wybierz squash opcja dla commitów, które chcesz scalić.

Korzyƛci:

  • Tworzy zwięzƂą historię.
  • UƂatwia przeglądanie ĆŒÄ…daƄ ƛciągnięcia.
  • Zmniejsza baƂagan wynikający z drobnych zmian.

PrzykƂad: Przed scaleniem gaƂęzi funkcji programiƛci często integrują wszystkie maƂe zatwierdzenia w jedno znaczące zatwierdzenie.


18) Jak moĆŒna cofnąć przesƂany commit w Git?

Po przesƂaniu zatwierdzenia do zdalnego repozytorium nie moĆŒna go bezpiecznie usunąć, ale moĆŒna je cofnąć za pomocą:

git revert <commit-hash>
git push origin main

RĂłĆŒnica między resetem a Revert:

Czynnik Zresetuj Revert
History Przepisuje historię Zachowuje historię
BezpieczeƄstwo Niebezpieczne dla repozytoriów wspóƂdzielonych Bezpieczny dla placówek publicznych
Stosowanie Cofnij lokalne Zdalne cofanie

PrzykƂad: Jeƛli bƂędne zatwierdzenie jest juĆŒ na GitHubie, uĆŒyj git revert zamiast git reset aby zachować spĂłjną, wspĂłlną historię.


19) Jaka jest rĂłĆŒnica między Git i GitHub?

Git to narzędzie kontroli wersji, podczas gdy GitHub jest platforma chmurowa do hostowania repozytoriów Git.

WYGLĄD git GitHub
Nature Narzędzie wiersza poleceƄ UsƂuga internetowa
Funkcjonować Traczmiany kodu ks lokalnie UmoĆŒliwia zdalną wspóƂpracę
Wymagania internetowe Opcjonalnie Wymagane
WƂasnoƛć Oprogramowanie typu open source (autor: Linus) Tor(valds) Posiadany przez Microsoft

PrzykƂad: Programista uĆŒywa Git do lokalnego zarządzania wersjami kodu ĆșrĂłdƂowego oraz GitHub do udostępniania kodu czƂonkom zespoƂu i przeglądania go.


20) Jakie są rĂłĆŒne strategie scalania Git?

Git udostępnia rĂłĆŒne strategie scalania w zaleĆŒnoƛci od tego, w jaki sposĂłb chcesz Ƃączyć zmiany.

Strategia OPIS Przypadek uĆŒycia
Rekurencyjne Domyƛlne; Ƃączy dwie gaƂęzie Standardowe scalanie
nasz Zachowuje zmiany w bieĆŒÄ…cej gaƂęzi Odrzucanie zmian przychodzących
Ich Przechowuje zmiany w gaƂęziach przychodzących Nadpisywanie zmian lokalnych
Oƛmiornica Ɓączy wiele gaƂęzi jednoczeƛnie OddziaƂy integracyjne

PrzykƂad: Podczas zƂoĆŒonych integracji programiƛci mogą uĆŒywać recursive strategia dla standardowych fuzji lub ours aby nadać priorytet zmianom lokalnym.


21) Co to jest Detached HEAD w Git i jak to naprawić?

A oderwana GƁOWA występuje, gdy HEAD WskaĆșnik nie wskazuje na gaƂąĆș, ale na konkretne zatwierdzenie. Dzieje się tak, gdy bezpoƛrednio wyewidencjonujesz wczeƛniejsze zatwierdzenie za pomocą:

git checkout <commit-hash>

W tym stanie nowe zatwierdzenia nie są powiązane z gaƂęzią i mogą zostać utracone, jeƛli nie zostaną odpowiednio odwoƂane.

Jak naprawić:

  1. UtwĂłrz nową gaƂąĆș ze stanu odƂączonego:
    git checkout -b temp-branch
  2. Następnie zatwierdĆș lub scal jak zwykle.

PrzykƂad: Testując starszą wersję kodu, moĆŒesz wprowadzić odƂączony HEAD. Zawsze twĂłrz gaƂąĆș, aby zachować zmiany.


22) Jaki jest cel polecenia git reflog i kiedy naleĆŒy go uĆŒywać?

git reflog jest potÄ™ĆŒnym poleceniem, ktĂłre tracks wszystkie ruchy HEAD wskaĆșnik, nawet te, ktĂłre nie są częƛcią widocznej historii gaƂęzi. DziaƂa jak siatka bezpieczeƄstwa, umoĆŒliwiająca odzyskanie utraconych commitĂłw.

Stosowanie:

git reflog
git checkout <commit-hash>

PrzykƂad:

Jeƛli przypadkowo uruchomisz git reset --hard i stracić ostatnie zatwierdzenia, git reflog pozwala na ich odnalezienie i przywrócenie.

Korzyƛci:

  • Przywraca utraconą pracę po nieudanym rebazowaniu lub resecie.
  • Zapewnia szczegóƂową historię zatwierdzania zmian.
  • Zwiększa bezpieczeƄstwo w zƂoĆŒonych procesach roboczych.

23) Wyjaƛnij podmoduƂy Git i przypadki ich uĆŒycia.

A PodmoduƂ Git UmoĆŒliwia doƂączenie jednego repozytorium Git jako podfolderu do innego. Jest to przydatne podczas zarządzania projektami zaleĆŒnymi od innych repozytoriĂłw.

WspĂłlne polecenia:

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

PrzykƂad: Aplikacja internetowa moĆŒe obejmować wspóƂdzielony moduƂ uwierzytelniania jako podmoduƂ Git w wielu projektach.

Zalety Wady
Promoponowne wykorzystanie kodu tes MoĆŒe komplikować procesy CI/CD
Utrzymuje niezaleĆŒne historie Wymaga ręcznych aktualizacji
Zapewnia spĂłjnoƛć wersji WyĆŒsza krzywa uczenia się

24) Czym są przepƂywy pracy Git i jakie są ich rĂłĆŒne typy?

PrzepƂywy pracy w Gicie definiują ustrukturyzowane podejƛcie zespoƂów do wspóƂpracy z Gitem. Najpopularniejsze typy to:

Workflow OPIS Przypadek uĆŒycia
Git Flow UĆŒywa gaƂęzi funkcjonalnych, rozwijających i wydających Projekty na duĆŒÄ… skalę
PrzepƂyw GitHub Uproszczony przepƂyw z wykorzystaniem gaƂęzi gƂównej i gaƂęzi funkcji CiągƂe wdraĆŒanie
PrzepƂyw GitLab Ɓączy Git Flow z integracją CI/CD Projekty zorientowane na DevOps
Oparty na pniu Deweloperzy zobowiązują się do korzystania z jednej, wspólnej gaƂęzi Zwinne, szybkie zespoƂy dostawcze

PrzykƂad: Startupy często przyjmują Oparty na pniu przepƂywy pracy w celu zwiększenia szybkoƛci, podczas gdy przedsiębiorstwa preferują Git Flow do kontrolowanych uwolnieƄ.


25) Czym jest Git Bisect i jak pomaga w debugowaniu?

git bisect jest potÄ™ĆŒnym narzędziem do debugowania, ktĂłre wykorzystuje wyszukiwanie binarne w celu zidentyfikowania commitu, ktĂłry spowodowaƂ bƂąd.

PrzykƂadowy przepƂyw pracy:

  1. Rozpocznij podziaƂ na dwie częƛci: git bisect start
  2. Oznacz bieĆŒÄ…ce zatwierdzenie jako zƂe: git bisect bad
  3. Zaznacz ostatnie znane dobre zatwierdzenie: git bisect good <commit>
  4. Git automatycznie sprawdza punkt ƛrodkowy.
  5. PrzeprowadĆș test i kontynuuj, aĆŒ znajdziesz bƂędne zatwierdzenie.

Korzyƛci:

  • Przyspiesza bƂąd tracw duĆŒych bazach kodu.
  • Zmniejsza koniecznoƛć ręcznego sprawdzania zatwierdzeƄ.
  • Idealny do testĂłw regresyjnych CI/CD.

26) Jaka jest rĂłĆŒnica między Git Merge Conflict i Rebase Conflict?

Oba problemy pojawiają się, gdy Git nie jest w stanie automatycznie pogodzić rĂłĆŒnic w kodzie, ale występują w rĂłĆŒnych kontekstach.

Typ Kiedy to nastąpi RozkƂad
Konflikt scalania Podczas git merge między gaƂęziami RozwiÄ…ĆŒ w gaƂęzi docelowej
Konflikt rebase Podczas git rebase podczas odtwarzania zatwierdzeƄ RozwiÄ…ĆŒ podczas ponownego bazowania, a następnie kontynuuj git rebase --continue

PrzykƂad: JeĆŒeli ten sam wiersz zostanie edytowany inaczej w dwĂłch gaƂęziach, wystąpi konflikt scalania; podczas zmiany bazy podobne zmiany rĂłwnieĆŒ wyzwalają konflikty zmiany bazy.


27) W jaki sposĂłb Git moĆŒna zintegrować z procesami CI/CD?

Git stanowi podstawę nowoczesnych przepƂywĂłw pracy CI/CD, uruchamiając zautomatyzowane procesy przy kaĆŒdym zatwierdzeniu lub ĆŒÄ…daniu ƛciągnięcia.

PrzykƂad integracji:

  • ZatwierdĆș, wyƛlij → Uruchamia potok CI (poprzez Jenkins, GitHub Actions lub GitLab CI).
  • Buduj i testuj → Automatyczne testy weryfikują zatwierdzenie.
  • Rozmieƛcić → Zmiany są wdraĆŒane na etapie testowym lub produkcyjnym.

Korzyƛci:

  • Zapewnia spĂłjnoƛć wdroĆŒeƄ.
  • UmoĆŒliwia szybkie cykle sprzÄ™ĆŒenia zwrotnego.
  • Zmniejsza liczbę bƂędĂłw ludzkich w wydaniach.

PrzykƂad: Akcje GitHub umoĆŒliwiają automatyczne testowanie i wdraĆŒanie projektu po przesƂaniu do niego zmian main gaƂąĆș.


28) Jaka jest rĂłĆŒnica między poleceniami git clean i git reset?

Command Cel Zakres PrzykƂad
git clean Usuwa nietracpliki ked Katalog roboczy git clean -f -d
git reset Przesuwa wskaĆșnik HEAD Zatwierdzenia, indeks i drzewo robocze git reset --hard HEAD~1

PrzykƂad: Jeƛli w Twojej przestrzeni roboczej znajdują się pliki tymczasowe lub wygenerowane, traczapisany przez Git, uĆŒyj git clean. Jeƛli chcesz cofnąć zatwierdzenia, uĆŒyj git reset.

Wskazówka: Zawsze sprawdzaj z git clean -n przed wykonaniem, aby uniknąć przypadkowego usunięcia.


29) Czym jest Git Reflog i Git Log?

ChociaĆŒ oba narzędzia wyƛwietlają historię zatwierdzania, sƂuĆŒÄ… rĂłĆŒnym celom.

Command Opcje TorĂłw Zawiera usunięte zatwierdzenia Przypadek uĆŒycia
git log Widoczna historia zatwierdzeƄ Nie Revobserwuj postęp projektu
git reflog Wszystkie ruchy HEAD Tak Odzyskaj utracone zatwierdzenia

PrzykƂad: Po przypadkowym usunięciu gaƂęzi moĆŒesz uĆŒyć git reflog aby zlokalizować i odzyskać ostatnie zatwierdzenie, ktĂłre nie pojawi się w git log.


30) Jakie są najlepsze praktyki efektywnego korzystania z Gita w duĆŒych zespoƂach?

  1. UĆŒyj konwencji nazewnictwa gaƂęzi: Postępuj zgodnie ze schematem takim jak feature/login-ui or bugfix/payment.
  2. Podejmuj zobowiązania często, ale z sensem: Niech kaĆŒde zatwierdzenie będzie skupione na pojedynczej, logicznej zmianie.
  3. Pisać DescriptWiadomoƛci commit: UĆŒyj trybu rozkazującego, np. "Fix user login validation."
  4. Rebase przed scaleniem: Utrzymuje historię zatwierdzania w czystoƛci.
  5. UĆŒyj ĆŒÄ…daƄ ƛciągnięcia dla Revwidoki: PromowspóƂpraca testowa i jakoƛć kodu.
  6. Konsekwentne wydawanie tagĂłw: Pomaga w kontroli wersji i wycofywaniu zmian.
  7. Automatyzacja testów poprzez CI/CD: Zapewnia stabilną integrację i szybsze wydania.

PrzykƂad: W rozwoju przedsiębiorstwa uporządkowane wykorzystanie Gita zapobiega konfliktom i upraszcza zarządzanie wydaniami.


31) Czym jest Git Internals i w jaki sposĂłb Git przechowuje dane?

Git Internals odnosi się do architektury niskiego poziomu, która napędza funkcjonalnoƛć Gita. Git przechowuje wszystko (pliki, katalogi, commity) jako obiekty .git/objects katalog. Te obiekty są identyfikowane przez Skróty SHA-1 i sklasyfikowane jako blobów, drzew, zatwierdzeƄ i tagów.

Cykl ĆŒycia magazynu danych:

  1. Po dodaniu pliku jego zawartoƛć jest zapisywana jako blob.
  2. A tree struktura pliku map.
  3. A commit Ƃączy drzewa i metadane.
  4. A tag odwoƂuje się do commitów wydaƄ.

PrzykƂad: Bieganie git cat-file -p <hash> umoĆŒliwia bezpoƛrednią inspekcję obiektĂłw Git.

Ta konstrukcja zapewnia integralnoƛć danych, wersja traczdolnoƛć, lekka wydajnoƛć, co sprawia, ĆŒe ​​Git jest znacznie bardziej wydajny w porĂłwnaniu do starszych systemĂłw, takich jak SVN.


32) Jaka jest rĂłĆŒnica pomiędzy Git Rebase Interactive i Git Merge?

Czynnik Git Rebase Interactive (git rebase -i) Scalanie Git
Cel UmoĆŒliwia edycję, zmianę kolejnoƛci i kompresję zatwierdzeƄ Ɓączy historie
History Przepisuje historię Zachowuje wszystkie zatwierdzenia
Przypadek uĆŒycia Czyszczenie przed scaleniem Zachowanie oryginalnej osi czasu

PrzykƂad: Przed scaleniem gaƂęzi funkcji programista moĆŒe uĆŒyć:

git rebase -i main

aby wyeliminować zbędne zatwierdzenia i wygenerować czystszą, liniową historię.

Ɓączyć jest bezpieczniejszy dla oddziaƂów wspóƂpracujących, podczas gdy przebazować poprawia czytelnoƛć prywatnych przepƂywów pracy programistycznej.


33) Czym jest Sparse Checkout w Git i jakie są jego korzyƛci?

Rozproszone kasy umoĆŒliwia programistom klonowanie lub pracę tylko z pewnym podzbiorem plikĂłw z duĆŒego repozytorium, zmniejszając uĆŒycie lokalnej pamięci masowej i przyspieszając operacje.

polecenia:

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

Korzyƛci:

  • Poprawia wydajnoƛć w monorepo.
  • Zmniejsza uĆŒycie dysku.
  • Idealne dla architektur mikrousƂug.

PrzykƂad: W przypadku duĆŒego projektu korporacyjnego deweloperzy mogą potrzebować tylko /frontend folder. Sparse Checkout pobiera tylko ten katalog, unikając niepotrzebnych gigabajtĂłw kodu zaplecza.


34) Czym jest klon pƂytki i kiedy naleĆŒy go stosować?

A PƂytki klon pobiera tylko częƛć historii repozytorium, dzięki czemu klonowanie jest znacznie szybsze.

polecenie:

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

Korzyƛci:

  • Skraca czas klonowania w przypadku duĆŒych repozytoriĂłw.
  • Oszczędza przepustowoƛć i miejsce na dysku.
  • Przydatne w przypadku procesĂłw CI wymagających jedynie niedawnych zatwierdzeƄ.

Niedogodnoƛci:

  • Nie moĆŒna uzyskać dostępu do starszych zatwierdzeƄ ani dokonać rebase poza pobraną gƂębokoƛcią.
  • Ograniczona widocznoƛć historii.

PrzykƂad: Systemy CI/CD często korzystają z pƂytkich klonów, aby szybko pobrać najnowszą wersję kodu do zautomatyzowanych kompilacji bez koniecznoƛci posiadania peƂnej historii zatwierdzeƄ.


35) Czym jest Git LFS (Large File Storage) i do czego sƂuĆŒy?

git-lfs (Large File Storage) to rozszerzenie, ktĂłre zastępuje duĆŒe pliki (np. obrazy, zestawy danych, pliki binarne) lekkimi wskaĆșnikami tekstowymi w Git, jednoczeƛnie przechowując faktyczną zawartoƛć na zdalnym serwerze LFS.

PrzykƂad polecenia:

git lfs install
git lfs track "*.zip"

Zalety:

  • Utrzymuje niewielką wagę repozytorium.
  • Poprawia wydajnoƛć w przypadku duĆŒych plikĂłw binarnych.
  • Bezproblemowo wspóƂpracuje z GitHub, GitLab i Bitbucket.

PrzykƂad: ZespoƂy zajmujące się tworzeniem gier wykorzystują Git LFS do obsƂugi duĆŒych zasobĂłw 3D bez spowalniania normalnych operacji Git.


36) Jak skonfigurować Git, aby uzyskać optymalną wydajnoƛć?

MoĆŒesz zwiększyć szybkoƛć i uĆŒytecznoƛć Gita poprzez precyzyjne dostrojenie parametrĂłw konfiguracji.

Najlepsze Praktyki:

  • WƂącz kompresję: git config --global core.compression 9
  • Ustaw automatyczne GC (zbieranie ƛmieci): git gc --auto
  • UĆŒyj pobierania rĂłwnolegƂego (v2.31+): git config --global fetch.parallel 4
  • WƂącz buforowanie poƛwiadczeƄ: git config --global credential.helper cache

PrzykƂad: W przypadku repozytoriĂłw o zasięgu korporacyjnym optymalizacja ustawieƄ pobierania i kompresji Git znacznie zmniejsza opĂłĆșnienia związane z klonowaniem i ƛciąganiem, co przekƂada się na wzrost wydajnoƛci pracy rozproszonych zespoƂów.


37) Czym jest podpisywanie commitĂłw (GPG) w Git i dlaczego jest waĆŒne?

Zastosowania podpisywania zatwierdzeƄ GPG (GNU Privacy Guard) kryptograficznie weryfikować autentycznoƛć zatwierdzeƄ, zapewniając, ĆŒe zmiany pochodzą od zaufanych wspóƂpracownikĂłw.

PrzykƂad konfiguracji:

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

Korzyƛci:

  • Zapobiega nieautoryzowanym lub podszytym się pod kogoƛ zatwierdzeniom.
  • Zwiększa bezpieczeƄstwo repozytorium i moĆŒliwoƛć przeprowadzania audytĂłw.
  • Buduje zaufanie organizacyjne.

PrzykƂad: Projekty open source często wymagają zatwierdzeƄ podpisanych przez GPG w celu potwierdzenia autentycznoƛci wkƂadu zewnętrznych programistów.


38) Czym Git rĂłĆŒni się od plikĂłw tekstowych w przypadku plikĂłw binarnych?

Git jest zoptymalizowany pod kątem kodu ĆșrĂłdƂowego opartego na tekƛcie i tracks zmiany wiersz po wierszu, co nie dziaƂa dobrze w przypadku plikĂłw binarnych. Pliki binarne są przechowywane jako pojedyncze bloby — kaĆŒda modyfikacja tworzy nową wersję, a nie rĂłĆŒnicę.

Typ Pliku Wydajnoƛć przechowywania Wsparcie Diff Zalecana obsƂuga
Tekst Bardzo wydajny Tak Domyƛlny Git
Binarna Nieskuteczny Nie UĆŒyj Git LFS

PrzykƂad: W przypadku repozytoriĂłw zawierających duĆŒÄ… liczbę obrazĂłw wƂączenie Git LFS zapobiega spadkowi wydajnoƛci spowodowanemu częstymi aktualizacjami plikĂłw binarnych.


39) Jak rozwiązywać typowe problemy z Gitem, takie jak odƂączony HEAD lub bƂędy scalania?

Typowe problemy i ich rozwiązania:

Kwestia Spowodować Rozwiązanie
OdƂączona GƁOWA Wyrejestrowanie okreƛlonego zatwierdzenia UtwĂłrz gaƂąĆș z git checkout -b new-branch
Konflikt scalania Konfliktowe edycje w plikach RozwiÄ…ĆŒ ręcznie, a następnie git add oraz git commit
Utracone zatwierdzenia Przypadkowe zresetowanie lub ponowne bazowanie Zastosowanie git reflog odzyskać
Odrzucono push Zdalne aktualizacje do przodu Pociągnij lub zmieƄ bazę przed wypchnięciem

PrzykƂad: Gdy występują bƂędy „nieprzewijania do przodu”, zwykle oznacza to, ĆŒe istnieją zdalne zmiany — uĆŒyj git pull --rebase aby zsynchronizować przed ponowną prĂłbą.


40) Jakie są najlepsze praktyki bezpieczeƄstwa dla repozytoriów Git?

  1. UĆŒyj uwierzytelniania SSH lub HTTPS: Unikaj uĆŒywania jawnych danych uwierzytelniających.
  2. WƂącz 2FA na platformach hostingowych Git.
  3. Unikaj ujawniania sekretów i kluczy: Zastosowanie .gitignore lub narzędzia takie jak GitGuardian.
  4. Podpisz zatwierdzenia kluczami GPG.
  5. Ogranicz kontrolę dostępu: WdraĆŒaj zasadę najmniejszych uprawnieƄ.
  6. UĆŒyj reguƂ ochrony gaƂęzi dla main or master.
  7. Przeprowadzaj regularne audyty repozytoriĂłw.

PrzykƂad: Firmy często integrują tajne skanowanie i wymuszają podpisane zatwierdzenia w procesach CI/CD, aby zapobiegać wyciekom danych i nieautoryzowanym zmianom.


41) Jak zautomatyzować operacje Git za pomocą powƂoki lub Python skrypty?

Automatyzacja Git zwiększa produktywnoƛć i spĂłjnoƛć powtarzalnych zadaƄ, takich jak zatwierdzanie, scalanie i wdraĆŒanie.

PrzykƂad – skrypt powƂoki:

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

PrzykƂad - Python Skrypt (uĆŒywający 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()

Korzyƛci:

  • Zmniejsza wysiƂek manualny.
  • Zapewnia spĂłjne wzorce zatwierdzania.
  • Bezproblemowa integracja z procesami CI/CD i DevOps.

42) Czym są Git Hooks i jak moĆŒna je wykorzystać w automatyzacji?

Haki Git to skrypty uruchamiane przez okreƛlone zdarzenia Git, sƂuĆŒÄ…ce do egzekwowania reguƂ lub automatyzowania procesĂłw.

Rodzaje haczykĂłw:

Typ DziaƂa dalej PrzykƂad
Strona klienta Maszyna programisty pre-commit, prepare-commit-msg
Po stronie serwera Zdalne repozytorium pre-receive, post-receive

PrzykƂad: A pre-commit hook moĆŒe uruchomić linter lub testy jednostkowe przed zezwoleniem na zatwierdzenie.

Korzyƛci:

  • Utrzymuje jakoƛć kodu.
  • Zapobiega naruszeniom zasad.
  • Automatyzuje powtarzalne zadania walidacji w przepƂywach pracy.

43) Jak przenieƛć projekt z SVN lub Mercurial do Gita?

Migracja z systemów scentralizowanych, takich jak SVN do git obejmuje ustrukturyzowaną konwersję w celu zachowania historii zatwierdzeƄ.

Kroki:

  1. Zainstaluj narzędzia migracji: git svn or svn2git.
  2. Klonuj repozytorium SVN:
    git svn clone <SVN_URL> --trunk=trunk --branches=branches --tags=tags
  3. Konwertuj tagi i gaƂęzie.
  4. Przeƛlij do zdalnego repozytorium Git (np. GitHub).

Zalety:

  • UmoĆŒliwia rozproszone przepƂywy pracy.
  • Zwiększa wydajnoƛć i elastycznoƛć.
  • UƂatwia rozgaƂęzianie i scalanie.

PrzykƂad: Organizacje migrujące ze starszych systemów SVN korzystają svn2git aby zachować autorstwo i przekazać historię.


44) Jakie są rĂłĆŒnice pomiędzy Git Flow i Trunk-Based Development?

WYGLĄD Git Flow Rozwój oparty na pniach
RozgaƂęzienie Wiele gaƂęzi (rozwĂłj, wydanie) Pojedyncza gƂówna gaƂąĆș
Model wydania StaƂe cykle wydaƄ CiągƂe wdraĆŒanie
ZƂoĆŒonoƛć Umiarkowany do wysokiego Niski
Najlepsze dla: DuĆŒe, stabilne zespoƂy Zwinne, szybko dziaƂające zespoƂy

PrzykƂad: Git Flow najlepiej sprawdza się w przypadku projektów korporacyjnych z kontrolowanymi wydaniami, natomiast Trunk-Based jest idealny dla startupów lub mikrousƂug, w których szybkoƛć ma kluczowe znaczenie.

Porównanie korzyƛci:

  • PrzepƂyw Gita: Silna kontrola wersji.
  • Oparte na pniu: Szybsze sprzÄ™ĆŒenie zwrotne i dopasowanie CI/CD.

45) Jakie strategie mogą zoptymalizować wydajnoƛć Gita w przypadku bardzo duĆŒych repozytoriĂłw?

W przypadku projektĂłw na skalę przedsiębiorstwa, obejmujących tysiące zatwierdzeƄ lub wspóƂautorĂłw, wydajnoƛć Gita moĆŒe się pogorszyć, jeƛli nie zostanie zoptymalizowana.

Kluczowe strategie optymalizacji:

  1. Zastosowanie PƂytkie klony (--depth=1) dla szybszej realizacji zamówieƄ.
  2. Zastosowanie Rozproszone kasy aby pobrać tylko odpowiednie katalogi.
  3. Uruchom Zbieranie ƛmieci: git gc --aggressive.
  4. Podziel monorepozycje na podmoduƂy lub mikrousƂugi.
  5. Regularnie kompresuj obiekty i pakuj pliki.

PrzykƂad: W przypadku monorepo o rozmiarze przekraczającym 10 GB wƂączenie rzadkiego pobierania i regularnego zbierania ƛmieci znacznie skraca czas klonowania i pobierania.


46) W jaki sposób Git wspiera wspóƂpracę w rozproszonych zespoƂach?

Git umoĆŒliwia wspóƂpracę poprzez dystrybucję kompletnych kopii repozytorium pomiędzy programistami. KaĆŒdy programista moĆŒe zatwierdzać zmiany lokalnie, przesyƂać zmiany do serwerĂłw zdalnych i scalać pracę innych.

PrzykƂad przepƂywu pracy opartego na wspóƂpracy:

  1. Rozwidl repozytorium.
  2. UtwĂłrz gaƂąĆș funkcji.
  3. WprowadĆș zmiany i otwĂłrz ĆŒÄ…danie ƛciągnięcia.
  4. Revwidok i poƂączenie w main.

Korzyƛci:

  • UmoĆŒliwia rĂłwnolegƂe rozwijanie funkcji.
  • Zmniejsza wąskie gardƂa zaleĆŒnoƛci.
  • ObsƂuguje pracę offline i elastyczne przepƂywy pracy.

PrzykƂad: TwĂłrcy oprogramowania typu open source z caƂego ƛwiata wspóƂpracują asynchronicznie za poƛrednictwem forkĂłw i ĆŒÄ…daƄ ƛciągnięcia hostowanych w serwisie GitHub.


47) Czym jest usƂuga Git Garbage Collection i dlaczego jest waĆŒna?

git gc (Zbieranie ƛmieci) usuwa niepotrzebne pliki i optymalizuje pamięć masową repozytorium poprzez kompresję obiektów i usuwanie niedostępnych commitów.

polecenie:

git gc --aggressive --prune=now

Korzyƛci:

  • Zwalnia miejsce na dysku.
  • Poprawia wydajnoƛć repozytorium.
  • Zmniejsza redundancję w obiektach commit.

PrzykƂad: Deweloperzy często biegają git gc po wielokrotnym scaleniu lub usunięciu gaƂęzi w celu utrzymania kondycji repozytorium, zwƂaszcza w przypadku projektów o dƂugim czasie trwania.


48) Czym jest Git Blame i jak moĆŒna go uĆŒywać do debugowania?

git blame identyfikuje, ktĂłre zatwierdzenie i autor jako ostatni zmodyfikowali kaĆŒdą linię pliku.

PrzykƂad polecenia:

git blame app.py

PrzypadkĂłw uĆŒycia:

  • Tracwprowadzając bƂędy.
  • Okreƛlanie wƂasnoƛci sekcji kodu.
  • Audyt zmian pod kątem odpowiedzialnoƛci.

PrzykƂad: Jeƛli funkcja zaczęƂa nie dziaƂać poprawnie po ostatniej aktualizacji, git blame moĆŒe wskazać konkretne zatwierdzenie i programistę, ktĂłry wprowadziƂ zmianę, co przyspiesza debugowanie.


49) Jaka jest rĂłĆŒnica między forkowaniem a klonowaniem w Git?

Czynnik Widelec Clone
Definicja Kopia repozytorium na Twoim koncie w serwisie hostingowym Lokalna kopia repozytorium
Lokalizacja Po stronie serwera (np. GitHub) Maszyna programisty
Przypadek uĆŒycia WspóƂtworzenie innego projektu RozwĂłj lokalny
Relacja PoƂączono za pomocą ĆŒÄ…daƄ ƛciągnięcia Bezpoƛrednia synchronizacja z pilotem

PrzykƂad: W przypadku projektĂłw typu open source naleĆŒy utworzyć rozwidlenie repozytorium, wprowadzić zmiany lokalnie po klonowaniu i przesƂać ĆŒÄ…danie ƛciągnięcia do oceny.


50) Jakie są najczęstsze bƂędy w Git i jak ich uniknąć?

BƂąd OPIS Zapobieganie
ZaangaĆŒowanie wraĆŒliwych danych Zawiera tajemnice lub dane uwierzytelniające Zastosowanie .gitignore lub GitGuardian
Wymuszanie wypychania do wspóƂdzielonych gaƂęzi Nadpisuje pracę innych Zastosowanie --force-with-lease
DuĆŒe zatwierdzenia binarne Spowalnia wydajnoƛć repozytorium UĆŒyj Git LFS
Skipping recenzje kodu Prowadzi do zƂej jakoƛci UĆŒyj ĆŒÄ…daƄ ƛciągnięcia
Ignorowanie konfliktĂłw rebase Powoduje chaos scalania Rozwiązuj konflikty ostroĆŒnie przed naciƛnięciem przycisku

PrzykƂad: Deweloper przypadkowo wcisnąƂ .env plik z danymi uwierzytelniającymi moĆŒe ujawnić poufne informacje; moĆŒna tego uniknąć dzięki .gitignore reguƂy i haki pre-commitowe.

🔍 NajwaĆŒniejsze pytania na rozmowie kwalifikacyjnej GIT z przykƂadami rzeczywistych sytuacji i strategicznymi odpowiedziami

1) Czym jest Git i czym rĂłĆŒni się od innych systemĂłw kontroli wersji?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną chce sprawdzić Twoją wiedzę na temat podstaw Git i jego zalet w porównaniu ze scentralizowanymi systemami.

PrzykƂadowa odpowiedĆș: Git to rozproszony system kontroli wersji, ktĂłry umoĆŒliwia programistom: traczmian w bazie kodu i efektywnie wspóƂpracować. W przeciwieƄstwie do scentralizowanych systemĂłw, takich jak SVN, Git pozwala kaĆŒdemu programiƛcie posiadać peƂną kopię repozytorium, Ƃącznie z jego historią. Taka struktura wspiera pracę offline, szybsze operacje oraz lepsze moĆŒliwoƛci rozgaƂęziania i scalania.


2) Czy moĆŒesz wyjaƛnić rĂłĆŒnicę między poleceniami git fetch, git pull i git merge?

Oczekuje się od kandydata: Rozmówca sprawdza Twoją wiedzę na temat popularnych poleceƄ Gita i ich przeznaczenia.

PrzykƂadowa odpowiedĆș: git fetch pobiera nowe dane ze zdalnego repozytorium, ale nie integruje ich z bieĆŒÄ…cą gaƂęzią. git pull wykonuje pobieranie, a następnie automatyczne scalanie, integrując nowe zatwierdzenia. git merge sƂuĆŒy do ręcznego Ƃączenia zmian z jednej gaƂęzi do drugiej po pobraniu aktualizacji.


3) Opisz sytuację, w której musiaƂeƛ rozwiązać konflikt scalania. Jak sobie z tym poradziƂeƛ?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną chce dowiedzieć się, czy posiadasz umiejętnoƛci rozwiązywania konfliktów i zarządzania zespoƂowym przepƂywem pracy.

PrzykƂadowa odpowiedĆș: W mojej poprzedniej roli często pracowaliƛmy na wspóƂdzielonych gaƂęziach, co czasami prowadziƂo do konfliktĂłw podczas scalania. Kiedy na taki natrafiƂem, uĆŒywaƂem git status Aby zidentyfikować pliki powodujące konflikt, przejrzaƂem obie wersje i zdecydowaƂem, ktĂłre zmiany zachować. Po edycji i przetestowaniu plikĂłw oznaczyƂem konflikt jako rozwiązany i zatwierdziƂem zmiany. SkontaktowaƂem się rĂłwnieĆŒ z zespoƂem, aby uniknąć podobnych problemĂłw w przyszƂoƛci poprzez ulepszenie praktyk zarządzania oddziaƂami.


4) Jak uĆŒywać strategii rozgaƂęzieƄ w Gicie do zarządzania projektami?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną chce sprawdzić, czy rozumiesz strukturalne przepƂywy pracy, takie jak Git Flow lub programowanie oparte na trunku.

PrzykƂadowa odpowiedĆș: Zwykle korzystam ze strategii Git Flow, ktĂłra obejmuje main, developi gaƂęzie funkcji. GaƂęzie funkcji są tworzone dla kaĆŒdego nowego zadania i scalane w develop po ukoƄczeniu, a następnie przetestowane przed scaleniem mainMetoda ta zapewnia kontrolowaną integrację i czyste cykle wydaƄ.


5) Jakie kroki podjąƂbyƛ w przypadku przypadkowego przekazania poufnych informacji do repozytorium Git?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną ocenia Twoją zdolnoƛć do skutecznego reagowania na kwestie związane z bezpieczeƄstwem lub zgodnoƛcią z przepisami.

PrzykƂadowa odpowiedĆș: Najpierw usunęƂabym poufny plik za pomocą git rm --cached i zatwierdzić zmianę. Następnie uĆŒyƂbym narzędzi takich jak git filter-branch or BFG Repo-Cleaner Aby usunąć informacje z historii. Na koniec dokonaƂbym rotacji wszelkich ujawnionych danych uwierzytelniających i powiadomiƂbym odpowiednie osoby zainteresowane, aby zapobiec potencjalnym zagroĆŒeniom.


6) Jak zapewnić spójnoƛć kodu, gdy wielu programistów pracuje nad nim jednoczeƛnie?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną chce dowiedzieć się, w jaki sposób zachowujesz integralnoƛć kodu w ƛrodowiskach wspóƂpracy.

PrzykƂadowa odpowiedĆș: W mojej poprzedniej pracy wdroĆŒyliƛmy politykę, zgodnie z ktĂłrą wszystkie commity przechodziƂy przez ĆŒÄ…dania ƛciągnięcia i przeglądy kodu. Automatyczne kontrole CI zapewniaƂy, ĆŒe scalany byƂ tylko kod przetestowany i sprawdzony. Takie podejƛcie zapewniaƂo jakoƛć i spĂłjnoƛć we wszystkich gaƂęziach.


7) W jaki sposĂłb cofnąć zatwierdzenie, ktĂłre zostaƂo juĆŒ przesƂane do wspóƂdzielonej gaƂęzi?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę chce wiedzieć, czy wiesz, jak bezpiecznie zarządzać bƂędami w udostępnionym repozytorium.

PrzykƂadowa odpowiedĆș: Najbezpieczniejszą metodą jest uĆŒycie git revert <commit_id>, ktĂłra tworzy nowe zatwierdzenie, ktĂłre cofa zmiany z okreƛlonego zatwierdzenia. Dzięki temu historia projektu jest zachowywana i nie zakƂóca pracy innych programistĂłw, w przeciwieƄstwie do git reset, ktĂłra przepisuje historię.


8) Opowiedz mi o sytuacji, w ktĂłrej musiaƂeƛ zarządzać wieloma gaƂęziami dla rĂłĆŒnych wydaƄ.

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną chce sprawdzić, czy potrafisz radzić sobie ze zƂoĆŒonoƛcią kontroli wersji.

PrzykƂadowa odpowiedĆș: Na moim poprzednim stanowisku utrzymywaliƛmy wiele wersji wydaƄ dla klientĂłw. UĆŒywaƂem osobnych gaƂęzi wydaƄ dla kaĆŒdej wersji i wdraĆŒaƂem krytyczne poprawki za pomocą Cherry Pick. Dzięki temu aktualizacje byƂy wdraĆŒane spĂłjnie, bez wprowadzania regresji w nowszych wersjach.


9) Jak radzisz sobie z duĆŒymi repozytoriami z wieloma wspóƂautorami, aby utrzymać optymalną wydajnoƛć?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną ocenia Twoją wiedzę na temat efektywnego skalowania Gita.

PrzykƂadowa odpowiedĆș: Zachęcam do pƂytkiego klonowania (--depth) dla szybszego dostępu i uĆŒytkowania .gitignore aby wykluczyć niepotrzebne pliki. Regularnie usuwamy rĂłwnieĆŒ stare gaƂęzie i korzystamy z Git LFS (Large File Storage) do przechowywania zasobĂłw binarnych. Dzięki temu repozytorium jest wydajne i Ƃatwe w zarządzaniu.


10) Opisz scenariusz, w którym musiaƂeƛ debugować problem w Gicie, który zakƂóciƂ rozwój. Jakie byƂo Twoje podejƛcie?

Oczekuje się od kandydata: Osoba przeprowadzająca rozmowę kwalifikacyjną chce sprawdzić Twoje umiejętnoƛci analitycznego myƛlenia i rozwiązywania problemów.

PrzykƂadowa odpowiedĆș: Na poprzednim stanowisku historia gaƂęzi czƂonka zespoƂu ulegƂa uszkodzeniu z powodu bƂędnego ponownego bazowania. ZbadaƂem to za pomocą git log oraz git reflog do tracrozwiązaƂem problem. Następnie przywrĂłciƂem prawidƂowe zatwierdzenia za pomocą git cherry-pick i zapewniƂ synchronizację wszystkich lokalnych oddziaƂów ze staƂą wersją zdalną. ZapobiegƂo to dalszym zakƂóceniom i utrzymaƂo produktywnoƛć zespoƂu.

Podsumuj ten post następująco: