Как распределенный SCM, git различает понятия «сделать снимок рабочей копии» (commit) и «sync репозитории» (push / pull / fetch).
Если у вас есть только один локальный клон вашего хранилища, то нет смысла выдвигать его. Тем не менее, с GitHub, вы делаете еще один клон (один на GitHub), и толкая изменения там имеет по крайней мере одно преимущество: резервное копирование. Если ваш компьютер умирает, у вас все еще есть все на github.
Конечно, это не основная цель github; github предназначен для совместного использования кода, поэтому, если ваш проект находится на github, вы можете разрешить другим пользователям извлекать из него данные, клонировать ваш проект, выполнять запросы на извлечение от своих клонов или даже предоставлять доверенным другим пользователям принудительный доступ к вашему хранилищу.
Еще одна причина для подталкивания, если вы используете несколько локальных клонов. Это может быть полезно для разных вещей: например, вы можете захотеть работать в двух разных ветвях одновременно или вы можете попробовать разрушительные операции в вашем хранилище; если все работает как задумано, вы сохраняете измененный клон (или откладываете изменения обратно в исходное хранилище), но если дела идут на юг, вы можете просто удалить испорченный клон и вернуться к исходному (который все еще остается неизменным) ,
Некоторые люди даже используют git для развертывания: рабочая версия также является git-репозиторием, а обновление до более новой версии - это выборка и проверка (очевидно, это работает, только если вам не нужен шаг сборки). Я бы не рекомендовал это для серьезных вещей, но для маленьких вещей это простое и прагматичное решение.