Git, stworzony przez Linusa Torvaldsa w 2005 roku, zrewolucjonizował sposób, w jaki programiści pracują nad kodem źródłowym. Dzięki swojej wydajności, elastyczności i rozproszonej naturze, Git stał się standardem w zarządzaniu wersjami kodu. W tej sekcji przybliżymy podstawowe informacje o Git, w tym krótką historię jego powstania, przyczyny popularności oraz kluczowe pojęcia niezbędne do zrozumienia jego działania.
Krótki przegląd historii Git-a
Git został stworzony w odpowiedzi na potrzebę wolnego i otwartego oprogramowania do zarządzania wersjami kodu źródłowego jądra Linuxa. Jego głównymi założeniami była prędkość, prostota projektu, wsparcie dla rozproszonych systemów, możliwość efektywnego zarządzania dużymi projektami, a także gwarancja integralności danych. Szybko zdobył popularność nie tylko wśród programistów jądra Linuxa, ale również w szerszej społeczności deweloperów, stając się de facto standardem w zarządzaniu wersjami.
Dlaczego Git jest tak popularny?
Git oferuje szereg zalet, które przyczyniły się do jego popularności:
- Elastyczność i skalowalność: Git świetnie sprawdza się zarówno w małych, jak i dużych projektach, oferując szybką i efektywną obsługę.
- Rozproszony system: Każdy kto pracuje z Gitem, posiada lokalną kopię całego repozytorium, co umożliwia pracę offline i zwiększa bezpieczeństwo.
- Branżowanie i łączenie: Git oferuje zaawansowane możliwości tworzenia oraz zarządzania gałęziami, co ułatwia równoległe rozwijanie różnych funkcji i łatwe łączenie zmian.
- Odzyskiwanie i cofanie zmian: Git zapewnia szerokie możliwości odzyskiwania utraconych danych i cofania zmian, co jest kluczowe dla bezpieczeństwa i stabilności projektu.
- Współpraca: Git ułatwia współpracę w zespołach rozproszonych, oferując łatwe sposoby na integrację zmian wprowadzanych przez różnych deweloperów.
Podstawowe pojęcia związane z Git-em
Zanim zagłębimy się w konkrety dotyczące komend i technik pracy z Gitem, warto zrozumieć kilka kluczowych pojęć:
- Repozytorium: Jest to miejsce, gdzie Git przechowuje wszystkie pliki projektu oraz informacje o ich historii. Może być lokalne (na komputerze użytkownika) lub zdalne (na serwerze).
- Commit: Reprezentuje zapisany stan plików w repozytorium w danym momencie. Każdy commit zawiera informacje o autorze zmian, dacie i komentarzu opisującym zmianę.
- Gałąź (Branch): To lekka, edytowalna kopia kodu źródłowego, która pozwala na równoległe rozwijanie różnych funkcji lub eksperymentowanie, bez wpływu na główną linię projektu.
- Merge: Proces łączenia zmian z różnych gałęzi w jedną linię, co pozwala na integrację rozwijanych funkcji do głównego projektu.
- Pull & Push: Polecenia służące do aktualizacji zdalnego repozytorium. Pull pobiera zmiany z repozytorium zdalnego do lokalnego, a Push wysyła zmiany z lokalnego repozytorium do zdalnego.
Zrozumienie tych pojęć jest kluczowe do efektywnej pracy z Gitem. W kolejnych rozdziałach przyjrzymy się bardziej szczegółowo, jak można wykorzystać Git do zarządzania kodem źródłowym, efektywnej pracy zespołowej oraz do zabezpieczania projektu przed niepożądanymi zmianami.
Instalacja i konfiguracja Git-a
Aby móc w pełni wykorzystać możliwości Git-a, pierwszym krokiem jest jego prawidłowa instalacja oraz konfiguracja na naszym komputerze. Ten rozdział przeprowadzi Cię przez proces instalacji Git-a na różnych systemach operacyjnych, podstawową konfigurację niezbędną do rozpoczęcia pracy, a także przez proces tworzenia Twojego pierwszego repozytorium Git.
Jak zainstalować Git-a na różnych systemach operacyjnych
Windows
- Pobieranie: Aby zainstalować Git-a na Windowsie, odwiedź oficjalną stronę Git git-scm.com i pobierz najnowszą wersję dla Windowsa.
- Instalacja: Uruchom pobrany plik instalacyjny i postępuj zgodnie z instrukcjami kreatora instalacji. Domyślne opcje instalacji są zazwyczaj odpowiednie dla większości użytkowników.
- Weryfikacja: Aby sprawdzić, czy instalacja przebiegła pomyślnie, otwórz wiersz poleceń (cmd) lub PowerShell i wpisz
git --version. Jeśli instalacja się powiodła, zobaczysz numer zainstalowanej wersji Git-a.
macOS
- Pobieranie: Git jest często już zainstalowany na macOS, ale aby uzyskać najnowszą wersję, najlepiej zainstalować go za pomocą menedżera pakietów, takiego jak Homebrew. Jeśli jeszcze go nie masz, zainstaluj Homebrew z ich oficjalnej strony.
- Instalacja: Otwórz Terminal i wpisz
brew install gitaby zainstalować Git-a. - Weryfikacja: Wpisz
git --versionw Terminalu, aby sprawdzić, czy Git został poprawnie zainstalowany.
Linux
- Pobieranie i Instalacja: Większość dystrybucji Linuxa ma Git-a dostępnego w swoich repozytoriach. Możesz go zainstalować za pomocą menedżera pakietów swojej dystrybucji. Na przykład, w dystrybucjach opartych na Debianie (takich jak Ubuntu), użyj polecenia
sudo apt-get install git. Dla dystrybucji opartych na Red Hat użyjsudo yum install git. - Weryfikacja: Podobnie jak w innych systemach, użyj polecenia
git --versionw terminalu, aby sprawdzić, czy Git został zainstalowany.
Podstawowa konfiguracja Git-a
Po zainstalowaniu Git-a, ważne jest, aby skonfigurować kilka podstawowych ustawień, które będą stosowane do wszystkich Twoich projektów. Obejmuje to ustawienie Twojego imienia, nazwiska oraz adresu e-mail, które będą wykorzystywane przy każdym zatwierdzaniu zmian (commit):
git config --global user.name "Twoje Imię i Nazwisko"
git config --global user.email "twój.email@example.com"
Dodatkowo, możesz chcieć ustawić edytor tekstu, który będzie używany do edycji komunikatów commitów:
git config --global core.editor nazwa_edytora
Dla przykładu, aby ustawić Vim jako edytor, wpisz git config --global core.editor vim.
Tworzenie pierwszego repozytorium
Z konfiguracją Git-a za nami, czas utworzyć pierwsze repozytorium. Możesz to zrobić na dwa sposoby: inicjalizując nowe repozytorium w istniejącym katalogu, lub klonując istniejące repozytorium z serwera.
Inicjalizacja nowego repozytorium
- Otwórz terminal i przejdź do katalogu, w którym chcesz utworzyć repozytorium.
- Wpisz
git init. Spowoduje to utworzenie nowego, pustego repozytorium Git w tym katalogu.
Klonowanie istniejącego repozytorium
Jeśli chcesz pracować z istniejącym projektem, możesz sklonować jego repozytorium:
git clone url_do_repozytorium
Zamień url_do_repozytorium na adres URL repozytorium, które chcesz sklonować. Na przykład:
cd ścieżka/do/twojego/projektu
git init
git clone – Klonowanie istniejącego repozytorium
Jeśli chcesz pracować nad istniejącym projektem, możesz użyć komendy git clone, aby skopiować całe repozytorium, włącznie z całą jego historią zmian, na swój komputer.
git clone url_repozytorium
Po wykonaniu tej komendy zostanie utworzony katalog z nazwą projektu, zawierający wszystkie pliki projektu oraz ukryty katalog .git, w którym przechowywane są dane repozytorium.
git add – Dodawanie zmian do repozytorium
Aby dodać zmiany w plikach do repozytorium (czyli zaplanować je do commita), użyj komendy git add. Możesz dodać pojedynczy plik, kilka plików lub wszystkie zmienione pliki naraz.
git add nazwa_pliku
Aby dodać wszystkie zmiany w projektu, użyj:
git add .
git commit – Zatwierdzanie zmian w repozytorium
Po dodaniu zmian za pomocą git add, następnym krokiem jest ich zatwierdzenie przy pomocy komendy git commit. Każdy commit powinien być opatrzony komentarzem, który krótko opisuje wykonane zmiany.
git status
Wykorzystując git status, możesz łatwo zidentyfikować nowe, zmodyfikowane lub usunięte pliki, które jeszcze nie zostały dodane do indeksu Git-a lub zatwierdzone w repozytorium.
git diff – Porównywanie zmian
Aby dokładnie przeanalizować, co zmieniło się w plikach między commitami, przed zatwierdzeniem zmian, a także po zatwierdzeniu, można użyć komendy git diff. Daje ona wgląd w konkretne linie, które zostały dodane lub usunięte.
git diff
Powyższe polecenie pokaże różnice między ostatnim commit-em a zmianami, które nie zostały jeszcze zaplanowane do commita. Aby zobaczyć różnice w zmianach zaplanowanych do commita, użyj:
git diff --cached
git log – Przeglądanie historii zmian
Historia commitów jest fundamentalnym elementem każdego repozytorium Git. Dzięki git log możesz przeglądać historię zmian, co umożliwia śledzenie postępów prac nad projektem, a także analizę i odnajdywanie konkretnych zmian.
git log
Domyślnie, git log wyświetli listę commitów w odwrotnej kolejności chronologicznej (najnowsze na górze) wraz z informacjami takimi jak identyfikator commita (SHA), autor, data oraz komentarz commita.
git revert i git reset – Cofanie zmian
W pracy nad projektem często zdarza się, że potrzebujemy cofnąć pewne zmiany. Git oferuje kilka potężnych narzędzi do tego celu, w tym git revert i git reset.
git revert
Użyj git revert, aby cofnąć zmiany wprowadzone przez określony commit, tworząc nowy commit, który odwraca zmiany.
git revert <identyfikator_commita>
To bezpieczny sposób na cofanie zmian, ponieważ nie ingeruje w historię repozytorium.
git reset
Komenda git reset służy do cofania zmian w repozytorium do określonego stanu. W zależności od użytego trybu (--soft, --mixed, --hard), możesz cofnąć zmiany w indeksie i katalogu roboczym, a nawet usunąć commity z historii repozytorium.
git branch nazwa_gałęzi
Aby zobaczyć listę wszystkich dostępnych gałęzi:
git branch
Gałąź, na której obecnie się znajdujesz, będzie oznaczona gwiazdką.
git checkout – Przełączanie się między gałęziami
Aby przełączyć się na inną gałąź, użyj komendy git checkout:
git checkout nazwa_gałęzi
To polecenie zmienia bieżącą gałąź na wybraną, aktualizując katalog roboczy, aby odzwierciedlić jej ostatni stan.
W nowszych wersjach Git-a, możesz również użyć git switch jako alternatywy dla git checkout, aby przełączyć gałęzie:
git switch nazwa_gałęzi
git merge – Łączenie zmian z różnych gałęzi
Gdy praca na danej gałęzi zostanie zakończona, możesz chcieć scalić te zmiany z powrotem do głównej linii rozwoju projektu. Służy do tego komenda git merge:
git checkout gałąź_docelowa
git merge gałąź_źródłowa
To polecenie scala zmiany z gałąź_źródłowa do gałąź_docelowa. Git automatycznie stara się rozwiązać większość konfliktów, ale w niektórych przypadkach może wymagać ręcznej interwencji.
git rebase – Przenoszenie zmian na inną bazę
Inną techniką na integrację zmian z jednej gałęzi do innej jest git rebase. Rebase przenosi lub „przepisuje” zmiany z jednej gałęzi na koniec innej, tworząc liniową historię zmian.
git stash
Aby przywrócić schowane zmiany, użyj:
git stash pop
Możesz również wylistować wszystkie schowane zmiany (git stash list) i wybrać, którą z nich chcesz przywrócić.
git tag – Oznaczanie ważnych punktów w historii projektu
Tagi w Git służą do oznaczania ważnych punktów w historii projektu, takich jak wydania wersji. Tagi mogą być lekkie (tylko nazwa) lub opatrzone adnotacją (zawierające dodatkowe informacje, takie jak komentarz, autor, data).
Aby utworzyć nowy tag:
git tag -a nazwa_tagu -m "Komentarz do tagu"
Lista dostępnych tagów może być wyświetlona za pomocą git tag. Aby sprawdzić informacje o konkretnym tagu, użyj git show nazwa_tagu.
git cherry-pick – Przenoszenie konkretnych zmian między gałęziami
Czasami może zajść potrzeba przeniesienia konkretnych zmian (commitów) z jednej gałęzi do innej. Zamiast mergować całą gałąź, możemy użyć git cherry-pick, aby wybrać pojedyncze commity.
git cherry-pick <identyfikator_commita>
Ta komenda pozwala na precyzyjne przeniesienie zmian, ale należy używać jej z rozwagą, aby uniknąć problemów z historią commitów.
Praca z zdalnymi repozytoriami – git push, git pull, git fetch
Zdalne repozytoria są kluczowe w pracy zespołowej nad projektami. Pozwalają na wymianę zmian między wieloma użytkownikami i są zwykle hostowane na serwerach takich jak GitHub, GitLab czy Bitbucket.
git push– wysyła zmiany z lokalnego repozytorium do zdalnego.bashgit push zdalne_repozytorium nazwa_gałęzi
git pull– ściąga zmiany z zdalnego repozytorium i automatycznie scala je z lokalną gałęzią.bashgit pull zdalne_repozytorium nazwa_gałęzi
git fetch– pobiera zmiany z zdalnego repozytorium, ale nie scala ich automatycznie z lokalną gałęzią. Pozwala to na ręczne zreviewowanie zmian przed ich scaleniem.bash






