Git - podstawowe operacje

Materiał przygotowany z pomocą AI

Git to rozproszony system kontroli wersji — zapisuje historię zmian w plikach, pozwala wracać do wcześniejszych stanów, równolegle rozwijać kilka wątków pracy (gałęzie) i synchronizować zmiany między kilkoma kopiami repozytorium. Jest narzędziem standardowym w programowaniu, ale przydaje się też do śledzenia każdej innej treści tekstowej — dokumentacji, konfiguracji, notatek.

Polecenia poniżej działają identycznie na Linuksie i macOS. Jeśli potrzebujesz kontekstu, jak w ogóle pracuje się w terminalu, zacznij od Komendy terminala - Linux i macOS.

Konfiguracja jednorazowa

Po pierwszej instalacji Gita ustaw dane, którymi będziesz podpisywać commity, oraz nazwę domyślnej gałęzi:

git config --global user.name "User"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main

Praca z repozytorium

git clone https://github.com/user/repo.git
git status                          # co się zmieniło
git diff                            # zmiany niezatwierdzone
git diff --staged                   # zmiany w stage
git add plik.txt                    # dodaj do stage
git add .                           # dodaj wszystko (uważaj na sekrety)
git restore plik.txt                # cofnij zmiany w pliku
git commit -m "[SEKCJA] Opis"
git log --oneline -20               # ostatnie 20 commitów
git log --graph --oneline --all     # graf gałęzi

Trzy obszary Gita

Plik może być w jednym z trzech stanów: roboczy (working tree — to, co widzisz w edytorze), stage (poczekalnia tego, co wejdzie do następnego commita, modyfikowana przez git add) i repozytorium (commity zapisane przez git commit). Polecenie git status pokazuje, w którym stanie są które pliki.

Gałęzie

git branch                          # lista lokalnych
git branch -a                       # lista wszystkich (lokalne + zdalne)
git checkout -b nowa-galaz          # utwórz i przełącz
git switch main                     # przełącz (nowsza składnia)
git merge develop                   # scal develop do bieżącej
git merge develop --ff-only         # tylko fast-forward (bez commita scalającego)

Synchronizacja ze zdalnym

git fetch                           # pobierz zmiany ze zdalnego (bez scalania)
git pull                            # fetch + merge
git push                            # wyślij commity
git push -u origin nowa-galaz       # pierwszy push nowej gałęzi
git push --force-with-lease         # bezpieczniejszy force push

Historia i lokalna praca

git show HEAD                       # ostatni commit
git blame plik.txt                  # kto zmienił którą linię
git stash                           # odłóż zmiany na bok (wraca przez stash pop)
git stash pop                       # przywróć ostatnio odłożone zmiany

git push --force nadpisuje historię

Używaj --force-with-lease zamiast --force — chroni przed nadpisaniem cudzych commitów. Nigdy nie force-pushuj na main w repozytorium z innymi konsumentami.

Zobacz także