Skip to content

Polecenia Git Cheat Sheet

Git to otwarty, rozproszony system kontroli wersji, który pozwala na sprawne i szybkie zarządzanie wersjami projektów — od bardzo małych do bardzo dużych. Git został stworzony przez Linusa Torvaldsa, aby wspomóc rozwój jądra systemu Linux.

Podstawy Git

git init <directory>

Tworzy puste repozytorium Git w określonym katalogu. Jeśli polecenie zostanie wywołane bez parametrów, zainicjuje bieżący katalog jako repozytorium Git.

git clone <repo>

Klonuje repozytorium znajdujące się pod adresem <repo> na lokalną maszynę. Repozytorium źródłowe może znajdować się w lokalnym systemie plików lub na zdalnej maszynie poprzez protokół HTTP lub SSH.

git config user.name <name>

Definiuje nazwę autora, która będzie przypisana do wszystkich commitów w bieżącym repozytorium.

git add <directory>

Dodaje zmiany w <directory> do następnego commita.

git commit -m "<message>"

Zatwierdza migawkę zmian (staged snapshot), używając <message> jako wiadomości commita.

git status

Wyświetla listę plików oczekujących na zatwierdzenie (staged), nieprzygotowanych (unstaged) oraz nieśledzonych (untracked).

git log

Wyświetla całą historię commitów w formacie domyślnym.

git diff

Porównuje różnice między katalogiem roboczym (zmiany jeszcze nie dodane poleceniem git add) a poczekalnią (po git add).

Cofanie zmian

git revert <commit>

Tworzy nowy commit, który odwraca wszystkie zmiany wprowadzone w <commit>, i stosuje go do bieżącej gałęzi.

git reset <file>

Usuwa <file> z poczekalni (staging area), ale pozostawia katalog roboczy bez zmian. To polecenie cofa stan przygotowania pliku bez nadpisywania jakichkolwiek zmian.

git clean -n

Wyświetla pliki, które zostaną usunięte z katalogu roboczego. Użyj flagi -f zamiast -n, aby faktycznie wykonać czyszczenie.

Przebudowa historii

git commit --amend

Modyfikuje ostatni commit. Jeśli w katalogu roboczym znajdują się zmiany gotowe do zatwierdzenia, zostaną one dołączone do ostatniego commita po użyciu polecenia git commit –amend.

git rebase <base>

Przebudowuje bieżącą gałąź na podstawie <base>. <base> może być identyfikatorem commita, nazwą gałęzi, tagiem lub HEAD.

git reflog

Umożliwia przeglądanie historii wszystkich operacji na wszystkich gałęziach (włączając w to usunięte commity oraz operacje resetowania).

Gałęzie Git

git branch

Wyświetla listę wszystkich gałęzi. Dodaj parametr <branch>, aby stworzyć nową gałąź o nazwie <branch>.

git checkout -b <branch>

Tworzy i przełącza się na nową gałąź o nazwie <branch>. Pomiń flagę -b, aby przełączyć się na istniejącą gałąź.

git merge <branch>

Scala gałąź <branch> z bieżącą gałęzią.

Zdalne repozytoria

git remote add <name> <url>

Dodaje nowe zdalne repozytorium. Po dodaniu, możesz używać nazwy <name> jako skrótu do adresu <url> w innych poleceniach.

git fetch <remote> <branch>

Pobiera wszystkie aktualizacje dla określonej <branch> z repozytorium, ale nie scala ich z gałęzią lokalną.

git pull <remote>

Pobiera określoną zdalną kopię bieżącej gałęzi i natychmiast scala ją z kopią lokalną.

git push <remote> <branch>

Wysyła gałąź do <remote> wraz z niezbędnymi commitami i obiektami. Jeśli zdalne repozytorium nie posiada takiej gałęzi, zostanie ona tam utworzona.

git config

git config --global user.name <name>

Definiuje nazwę autora dla wszystkich commitów bieżącego użytkownika.

git config --global user.email <email>

Definiuje adres e-mail autora dla wszystkich commitów bieżącego użytkownika.

git config --global alias.<alias-name> <git-command>

Tworzy skrót (alias) dla polecenia Git.

git config --system core.editor <editor>

Ustawia edytor tekstowy używany przez polecenia dla wszystkich użytkowników komputera.

git config --global --edit

Otwiera globalny plik konfiguracyjny w edytorze tekstowym w celu ręcznej edycji.

git log

git log -<limit>

Wyświetla <limit> ostatnich wpisów w historii commitów.

git log --oneline

Wyświetla historię commitów, kompresując każdy wpis do jednej linii.

git log -p

Wyświetla historię commitów wraz z pełnymi zmianami (diff) dla każdego z nich.

git log --stat

Wyświetla historię commitów, zawierającą informacje o zmodyfikowanych plikach oraz względnej liczbie dodanych lub usuniętych linii w każdym z nich.

git log --author="<pattern>"

Wyszukuje commity konkretnego autora.

git log --grep="<pattern>"

Wyszukuje w historii commitów, używając dopasowania wyrażeń regularnych.

git log <since>..<until>

Wyświetla commity, które powstały pomiędzy <since> a <until>.

git log -- <file>

Wyświetla tylko te commity, które zawierają określony plik.

git diff

git diff HEAD

Porównuje różnice między katalogiem roboczym (zmiany jeszcze nie dodane) a repozytorium (po git commit).

git diff --cached

Porównuje różnice między poczekalnią (po git add) a repozytorium (po git commit).

git reset

git reset

Resetuje poczekalnię tak, aby odpowiadała ostatniemu commitowi, ale pozostawia katalog roboczy bez zmian.

git reset --hard

Resetuje zarówno poczekalnię, jak i katalog roboczy do stanu z ostatniego commita, nadpisując wszystkie zmiany w katalogu roboczym.

git reset <commit>

Cofa wskaźnik bieżącej gałęzi do <commit> i resetuje poczekalnię, ale nie zmienia katalogu roboczego.

git reset --hard <commit>

Działa tak jak powyżej, ale resetuje zarówno poczekalnię, jak i katalog roboczy. Usuwa niezatwierdzone zmiany oraz wszystkie commity po <commit>.

git pull

git pull --rebase <remote>

Pobiera zdalną kopię bieżącej gałęzi i przebudowuje ją na podstawie kopii lokalnej. Używa git rebase zamiast merge do integracji gałęzi.

git push

git push <remote> --force

Wymusza wysłanie zmian (Force push).

git push <remote> --all

Wysyła wszystkie lokalne gałęzie do określonego zdalnego repozytorium.

git push <remote> --tags

Wysyła wszystkie lokalne tagi do zdalnego repozytorium.