Git & GitHub Cheatsheet

Krótki, ale kompletny przewodnik po najczęściej używanych poleceniach Git i praktykach GitHub. Pomoże szybko odświeżyć pamięć i sprawnie zarządzać wersjami kodu.

1. Podstawy Git

Konfiguracja

  • Ustawienie nazwy użytkownika:
    # Konfiguruje globalną nazwę, która będzie używana w commitach.
    git config --global user.name "Twoja Nazwa"
  • Ustawienie adresu e-mail:
    # Konfiguruje globalny e-mail, który będzie widoczny w historii commitów.
    git config --global user.email "twoj.email@example.com"
  • Sprawdzenie konfiguracji:
    # Wyświetla wszystkie globalne ustawienia Git.
    git config --list

Inicjalizacja i klonowanie

  • Inicjalizacja nowego repozytorium:
    # Tworzy puste repozytorium Git w bieżącym katalogu.
    git init
  • Klonowanie repozytorium zdalnego:
    # Pobiera zdalne repozytorium na dysk lokalny, tworząc jego kopię.
    git clone [url_repozytorium]

Praca z plikami

  • Sprawdzenie statusu plików:
    # Pokazuje stan plików: zmodyfikowane, dodane do poczekalni (staged), lub nieśledzone (untracked).
    git status
  • Dodanie plików do poczekalni (staging area):
    # Przygotowuje konkretny plik do kolejnego commita.
    git add [nazwa_pliku]
  • Dodanie wszystkich plików:
    # Dodaje wszystkie zmodyfikowane i nowe pliki do poczekalni.
    git add .
  • Usunięcie plików z poczekalni:
    # Wycofuje plik z poczekalni, bez usuwania zmian w pliku.
    git restore --staged [nazwa_pliku]

2. Commity i Historia

Tworzenie commitów

  • Zapisanie zmian w repozytorium:
    # Tworzy nowy commit ze zmian, które są w poczekalni. Wiadomość powinna być krótka i opisowa.
    git commit -m "Opis zmian"
  • Dodanie wszystkich zmian i commit:
    # Skrót dla 'git add .' i 'git commit -m'. Działa tylko na plikach już śledzonych przez Git.
    git commit -am "Opis zmian"
  • Zmiana ostatniego commita:
    # Pozwala na edycję wiadomości lub dodanie nowych zmian do ostatniego commita. Używać ostrożnie, zwłaszcza gdy commit został już wysłany na serwer.
    git commit --amend -m "Nowy opis"

Historia i cofanie zmian

  • Wyświetlenie historii commitów:
    # Pokazuje listę commitów w danym repozytorium.
    git log
  • Wycofanie ostatniego commita:
    # Tworzy nowy commit, który cofa zmiany z poprzedniego commita. Bezpieczne i zalecane.
    git revert HEAD
  • Usunięcie commita (ostateczne!):
    # Przywraca stan repozytorium do określonego commita, trwale usuwając całą historię po nim. Używać tylko lokalnie.
    git reset --hard [id_commita]

Gałęzie (Branches)

  • Wyświetlenie wszystkich gałęzi:
    # Pokazuje wszystkie gałęzie w repozytorium. Gwiazdka (*) oznacza bieżącą gałąź.
    git branch
  • Utworzenie nowej gałęzi:
    # Tworzy nową gałąź na podstawie bieżącego commita, ale nie przełącza na nią.
    git branch [nazwa_gałęzi]
  • Przełączenie na gałąź:
    # Zmienia bieżącą gałąź, aktualizując pliki w katalogu roboczym.
    git checkout [nazwa_gałęzi]
  • Utworzenie i przełączenie:
    # Tworzy nową gałąź i natychmiast się na nią przełącza. To najczęstsza metoda tworzenia gałęzi.
    git checkout -b [nazwa_gałęzi]
  • Usunięcie gałęzi:
    # Usuwa lokalną gałąź. Opcja '-d' usuwa tylko, gdy jest już zmergowana, a '-D' wymusza usunięcie.
    git branch -d [nazwa_gałęzi]
  • Połączenie gałęzi:
    # Łączy zmiany z podanej gałęzi z bieżącą gałęzią.
    git merge [nazwa_gałęzi]

3. Praktyczne Use Case'y

Dodanie nowej funkcjonalności

  • Opis: Rozpoczynasz pracę nad nową funkcją.
    # 1. Upewnij się, że jesteś na głównej gałęzi i jest ona aktualna.
    git checkout main
    git pull
    
    # 2. Stwórz nową gałąź na funkcję (zgodnie z konwencją 'feature/nazwa_funkcji').
    git checkout -b feature/nowy-panel-admina
    
    # 3. Po zaimplementowaniu i przetestowaniu, dodaj i zatwierdź zmiany.
    git add .
    git commit -m "feat: Dodano podstawowy panel administracyjny"
    
    # 4. Wyślij gałąź na serwer, aby inni mogli ją zobaczyć lub zrecenzować.
    git push origin feature/nowy-panel-admina

Naprawa błędu (Hotfix)

  • Opis: Szybka poprawka krytycznego błędu, która nie może czekać.
    # 1. Przejdź na główną gałąź i upewnij się, że jest aktualna.
    git checkout main
    git pull
    
    # 2. Stwórz nową gałąź na poprawkę (konwencja 'fix/opis-bledu').
    git checkout -b fix/naprawiono-logowanie
    
    # 3. Po wprowadzeniu i zatwierdzeniu zmian, scal je z powrotem do głównej gałęzi.
    git add .
    git commit -m "fix: Naprawiono błąd w logowaniu"
    git checkout main
    git merge fix/naprawiono-logowanie
    
    # 4. Usuń gałąź tymczasową i wyślij poprawkę na serwer.
    git branch -d fix/naprawiono-logowanie
    git push origin main

4. Zaawansowany .gitignore

Dodatkowe reguły

Oprócz standardowych reguł, możesz korzystać z bardziej precyzyjnych wzorców, aby mieć pełną kontrolę nad tym, co jest, a co nie jest śledzone przez Git.

  • Ignorowanie plików na dowolnym poziomie zagnieżdżenia:
    # Ignoruj pliki .DS_Store w każdym katalogu.
    **/.DS_Store
  • Ignorowanie wszystkich plików z wyjątkiem jednego:
    # Ignoruj cały katalog 'config', ale nie plik 'config/global.php'.
    /config/*
    !/config/global.php
  • Ignorowanie katalogu, ale śledzenie jego podkatalogów:
    # Ignoruj folder 'public/assets' ale śledź wszystko w środku, co nie jest folderem.
    /public/assets/*
    !/public/assets/**/
  • Ignorowanie po typie (np. wszystkich plików kompilacji):
    # Typowe reguły dla różnych środowisk.
    *.zip
    *.rar
    *.log
    /vendor/
  • Więcej informacji: Oficjalna dokumentacja gitignore.

SŁOWNICZEK POJĘĆ