Git push — это одна из консольных команд Git. Она позволяет передать изменения из локального репозитория (набора файлов из папки .git) в удаленный. Разработчики используют эту команду в следующих целях:
- добавить новый функционал в основную ветку,
- исправить баг,
- закрыть уязвимость в коде и др.
В статье мы расскажем, как пользоваться командой git push и перечислим наиболее популярные опции.
Основной функционал команды git push
Существует большое число вариантов команды git push, основные из которых мы опишем ниже. Если вы хотите изучить все опции:
- 1 Подключитесь к серверу с Git по SSH.
-
2
Введите команду:
git push --help
Для работы с основным функционалом git push вам также потребуется SSH-подключение к серверу.
Как проверить наличие незапушенных коммитов
Перед тем как пушить новую информацию, нужно сохранить текущие изменения — они называются коммитами. Для этого необходимо использовать команду git commit. Перед тем как сохранить изменения, проверьте наличие изменений с помощью команды:
git status
Если на локальном сервере есть несохраненные изменения, на экране отобразится сообщение:
Your branch is ahead of 'origin/master' by 4 commits.
Чтобы получить детальную информацию по истории коммитов, введите команду:
git log
В выводе отобразится история коммитов:
commit 0fcd9558b013f642a8c3b4a59a16a66de39c99bd (HEAD -> master)
Author: User <name@test.ru>
Date: Sun Jan 01 00:00:00 2023 +0300
Local commit
commit 289c650767d2c7c2e58486e27b8b3933c6442078 (origin/master, origin/HEAD)
Author: User <name@test.ru>
Date: Sun Jan 01 00:05:00 2023 +0300
Pushed commit
Эти изменения можно отправить на удаленный сервер. Однако сначала нужно связать локальный и удаленный репозитории между собой.
Как связать локальный и удаленный репозиторий
Перед тем как начать работу нужно связать локальный и удаленный репозиторий. Для этого используется команда:
git remote add repository_name repository_link
Где:
- repository_name — название удаленного репозитория,
- repository_link — ссылка на удаленный репозиторий.
Как отправить изменения в удаленный репозиторий
Помимо коммитов в Git существуют ветки — указатели, которые ведут к коммитам. Чтобы запушить изменения в ту или иную ветку, используйте команду:
git push repository_name branch_name
Где:
- repository_name — название удаленного репозитория,
- branch_name — название ветки, в которую нужно отправить изменения. Чаще всего она носит название master или main.
Если вам нужно отправить изменения в основную ветку, команда будет иметь следующий вид:
git push origin master
Если вы хотите отправить большое количество изменений, перед началом работы введите команду:
git push -u origin master
После этого для пушинга можно использовать короткую команду:
git push
Как отправить локальную ветку в удаленную ветку
Бывают случаи, когда нужно отправить целую локальную ветку в ветку удаленного репозитория. Для этого используется следующая команда:
git push repository_name local_branch:remote_branch
Где:
- repository_name — название локального репозитория,
- local_branch — название локальной ветки,
- remote_branch — название удаленной ветки.
Как отправить все ветки на сервер
Если вам нужно отправить все измененные ветки в удаленный репозиторий, используйте следующую команду:
git push repository_name --all
Вместо repository_name укажите имя удаленного репозитория.
Как отправить изменения локальной ветки
Для отправки изменений локальной ветки не нужно указывать ее название. Для этого используется команда:
git push repository_name HEAD
Вместо repository_name укажите имя удаленного репозитория. Значение HEAD указывает на текущую ветку.
Как сделать принудительную публикацию
Обратите внимание
Следующая команда сотрет предыдущую публикацию из общего доступа. Рекомендуем выполнять принудительную публикацию только в крайнем случае.
Иногда при попытке публикации может возникать ошибка:
To github.com:test/index.git
! [rejected] branch_name -> branch_name (fetch first)
error: не удалось отправить некоторые ссылки в «github.com:test/index.git»
Это происходит, когда другой пользователь успел запушить изменения раньше вас. Если вам нужно отправить изменения, не обращая внимание на ошибку, используйте команду:
git push --force
Если вы не хотите, чтобы изменения от других пользователей не перезаписывались, используйте этот вариант команды:
git push --force-with-lease
Как удалить ветку в Git
Чтобы удалить локальную ветку, используйте следующую команду:
git branch -d branch_name
Вместо branch_name укажите имя локальной ветки.
Для того чтобы стереть удаленную ветку, используйте другой вариант команды:
git push --delete repository_name branch_name
Где:
- repository_name — имя удаленного репозитория,
- branch_name — имя ветки, которую нужно удалить.
Как создать и запушить тег
Тег в Git — это метка, которой можно обозначить коммит в истории. Эта история хранится в репозитории Git.
Чтобы создать тег, используется следующая команда:
git tag tag_name
Вместо tag_name укажите название тега.
Чтобы отправить тег в удаленный репозиторий, введите команду:
git push repository_name tag_name
Где:
- repository_name — название удаленного репозитория,
- tag_name — название тега, который нужно запушить.
Обратите внимание
Следующая команда отправит все теги, в том числе удаленные с сервера.
Для отправки всех тегов используйте команду:
git push --tags
Как удалить тег
Для того чтобы удалить тег, к команде git push добавляется флаг --delete:
git push --delete repository_name tag_name
Где:
- repository_name — название удаленного репозитория,
- tag_name — название тега, который нужно удалить.
Если вы хотите удалить локальные теги, используйте команду:
git tag -d tag_name
Вместо tag_name укажите название тега, который вы хотите удалить.
Дополнительные возможности git
Как удалить локальные данные
Если вы удалили ветку с сервера, она по-прежнему существует локально. Чтобы удалить все данные, которых нет на сервере, используйте команду:
git remote prune repository_name
Вместо repository_name укажите имя удаленного репозитория.
Как проверить пушинг
Если вы хотите исключить ошибку при пушинге изменений, используйте команду:
git push --dry-run
Эта команда имеет особенность: при ее вводе изменения не запушатся. Однако вывод будет таким, как при реальной отправке изменений.
Как выполнить атомарный пушинг
Если вы тестируете проверяющие системы Git, вам может понадобиться особое «поведение» сервера: он должен либо принять все отправленные ветки, либо отклонить их.
Когда вам требуется подобный тест, выполните атомарный пушинг. Для этого используйте команду с опцией --atomic:
git push --atomic repository_name branch_name
Где:
- repository_name — название удаленного репозитория,
- branch_name — имя ветки, которую нужно отправить. Если вы хотите запушить несколько веток одновременно, перечислите их через пробел.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊