git commit

Zapisuje zmiany z poczekalni jako nowy commit w historii repozytorium.

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ś (pomija git 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 -a i -m: dodaje zmienione śledzone pliki i od razu commituje.
  • git commit — bez -m otwiera 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.