Dlaczego tak
Najpierw edytuje się pliki (edit), potem dodaje zmiany do poczekalni poleceniem git add (stage), następnie zatwierdza je w lokalnym repozytorium (commit), a na końcu wysyła do repozytorium zdalnego (push). Commit przed git add niczego by nie zatwierdził, bo poczekalnia byłaby pusta. Push przed commit nie wyśle nowych zmian, ponieważ wysyłane są tylko zatwierdzone commity.