чем отличается push от commit?
Собственно добавление к вышесказанному, коммит всегда работает локально. Можно сколько угодно коммитить без необходимости соединения с сервером например, или страха что-то поломать для других разработчиков (удобно для того чтобы тестировать и откатывать что-то локально). И когда все устраивает запушить, чтобы другие разработчики могли работать с этими изменениями