git commit zapisuje zmiany, które wcześniej dodałeś do poczekalni (ang. staging area) przez git add, jako nowy commit w historii repozytorium. Commit to migawka stanu projektu z datą, autorem i opisem — punkt, do którego zawsze możesz wrócić. Co ważne: git commit domyślnie zapisuje tylko to, co jest w poczekalni, a nie wszystkie zmiany w katalogu roboczym. To częste źródło zdziwienia, ale o tym za chwilę.
Składnia i najważniejsze opcje
Podstawowa forma to git commit [opcje]. Najczęściej używasz tych flag:
-m— podaje opis commita w jednej linii, bez otwierania edytora.-a— automatycznie dodaje do commita wszystkie śledzone pliki, które zmieniłeś lub usunąłeś (pomijagit add). Nowych, nieśledzonych plików NIE obejmuje.--amend— nadpisuje ostatni commit zamiast tworzyć nowy. Przydatne, gdy zapomniałeś pliku albo masz literówkę w opisie.--no-edit— używane razem z--amend, zachowuje starą wiadomość bez otwierania edytora.-v— pokazuje w edytorze diff zmian, które właśnie commitujesz (dobry nawyk: widzisz, co naprawdę zapisujesz).--author=— ustawia autora w formacie"Imię, np. gdy commitujesz cudzą pracę." -S— podpisuje commit kluczem GPG.--allow-empty— tworzy commit bez żadnych zmian (czasem przydatne w skryptach CI).
Przykłady użycia
git commit -m "Dodaj walidację formularza logowania"— zapisuje zawartość poczekalni z krótkim opisem.git commit -am "Popraw literówki w README"— łączy-ai-m: dodaje zmienione śledzone pliki i od razu commituje.git commit— bez-motwiera edytor, w którym wpiszesz dłuższy opis (tytuł + pusta linia + szczegóły).git commit --amend -m "Lepszy opis ostatniego commita"— poprawia opis poprzedniego commita.git add zapomniany.txt && git commit --amend --no-edit— dorzuca brakujący plik do ostatniego commita, nie zmieniając wiadomości.
Częste błędy i pułapki
„Commit pusty, choć coś zmieniałem” — pewnie nie zrobiłeś git add. Sprawdź stan przez git status; git commit bierze tylko to, co jest w poczekalni.
-a nie łapie nowych plików — flaga obejmuje wyłącznie pliki już śledzone przez Gita. Świeżo utworzony plik musisz najpierw dodać przez git add.
--amend zmienia historię — tworzy nowy commit z nowym hashem. Jeśli poprzedni commit był już wypchnięty na zdalne repo, kolejny push będzie wymagał --force (a lepiej --force-with-lease) i może zepsuć pracę innym. Amenduj tylko commity, których jeszcze nie udostępniłeś.
Brak skonfigurowanego autora — przy pierwszym commicie Git poprosi o user.name i user.email. Ustaw je przez git config, inaczej commit nie przejdzie albo dostanie dziwnego autora.
Powiązane komendy: git add, git status, git log, git push, git reset, git config.