git push
git push: отправить (запушить) изменения в удалённый репозиторий.
Команда git push используется для выгрузки содержимого локального репозитория в удалённый. Именно так коммиты переносятся из локального репозитория на сервер. Это противоположность git fetch, но если fetch импортирует коммиты в локальные ветки, то push экспортирует их в удалённые.
Команда push может перезаписать или затереть чужие изменения, особенно при принудительной отправке (force push), поэтому с ней стоит быть поосторожнее. Изменения отправляются в удалённый репозиторий и могут затронуть других разработчиков, работающих над тем же проектом.
Когда ты пушишь изменения, удалённая ветка обновляется твоими локальными коммитами. Если кто-то другой успел запушить свои изменения в ту же ветку, Git отклонит пуш и попросит сначала стянуть чужие коммиты. Это защищает от случайной затирки чужой работы.
Отправка коммитов — это основной способ поделиться кодом с командой, без которого совместная разработка в Git невозможна. Так все могут видеть твой код и внедрять его в свои репозитории.
Примеры
Представь: в локальном репозитории появились новые коммиты, и нужно поделиться ими с командой. Вот как это сделать.
После локального коммита изменений, отправь новые коммиты из локальной ветки main в одноимённую ветку удалённого репозитория origin:
git push origin mainЕсли ветки не существует, используй флаг -u (сокращение от --set-upstream), чтобы её создать:
git push -u origin new-featureОтправить все локальные ветки в соответствующие удалённые ветки:
git push --allПринудительная отправка (force push), перезаписывающая удалённую ветку твоими локальными изменениями:
Это ОПАСНОЕ действие, которое нужно применять с максимальной осторожностью, так как оно может затереть чужую работу.
В обычных ситуациях лучше сначала стянуть изменения с сервера, сделать ребейз (rebase) своих коммитов поверх обновлений (после git pull или git fetch), разрешая возможные конфликты. После этого изменения можно будет отправить без принудительной перезаписи.
git push --force.gitignoregit checkoutgit configgit taggit worktree