ProCloud Yandex
13.08.2023
читать 6 минут

Что такое git push и как его использовать

/upload/iblock/d3e/79wofdcon0r6futmnrld7vgh983bl64j/GettyImages-1392356345_%281%29.jpg

Введение

По большому счету Git push используется для отправки локальной ветки на удаленный репозиторий. Таким образом упомянутая команда сильно облегчает процесс синхронизации в команде разработчиков, а если быть точнее, то пересылает совершенные апдейты. Если разработчик самостоятельно занимается проектом, то команда открывает возможность хранить имеющийся код в облаке, таком как github или же gitlab и прочие. Тем самым минимизируя риск потерять данные.

Git pull также применяется в качестве инструмента синхронизации, который используется для получения изменений c git remote и удаленного сервера. Простыми словами разработчик может получить список удаленных подключений к репозиторию. Сейчас мы рассмотрим основные особенности запуска репозитория git. Для упрощения в статье будем использовать ”пуш”, имея в виду git push.

Отправка изменений в чистый репозиторий

Перед использованием команды git push потребуется создать связь между удаленным и локальным репозиторием. Для этого можно использовать следующую команду:

git remote add <repo_name> link

Название удаленного репозитория нужно указать вместо “repo_name”. В примере мы будем применять название “origin”, на практике оно используется чаще всего. Ссылка на удаленный репозиторий указывается вместо “link”. Ссылка может быть абсолютно разной,  это зависит от применения https и ssh. Если в вашем случае ssh, который является обязательным для gitlab и github, то вам нужно будет проделать ряд действий для создания ключа ssh.

Отправка изменений

Перед пушем нужно сохранить изменения, используя git commit. После чего в терминале нужно будет прописать следующую команду:

git push origin <branch> 

В данном случае вместо “branch” нужно прописать то название ветки, которую вам требуется переслать. Зачастую используется main или же master.

Прописывать упомянутую команду каждый раз не совсем удобно, так что в помощь приходит git push по умолчанию. Чтобы осуществить данную задачу потребуется ввести предыдущую команду всего один раз, назначив флаг -u:

git push -u origin master

Затем вы сможете прописывать команду намного проще, что возможно благодаря git, который запомнил процесс выполнения задачи. После этого он будет пушить ветку под названием “master” на сервер “origin”.

git push

С этого момента упомянутая команда будет отвечать за задачу запуска ветки в удаленном репозитории. Просто запуште уже имеющуюся локальную ветку, чтобы добавить ветку в удаленный репозиторий с помощью git.

Дополнительные опции публикации

Отправка ветки на сервер в ветку с другим именем

Git push можно назначить в другую ветку, что осуществляется с помощью готового синтаксиса. Он представляет собой имя удаленной ветки, которое указывается сразу после двоеточия:

git push origin branch:server_branch

В этом примере в качестве имени локальной ветки используется branch, а вот имя удаленной ветки на сервере указывается вместо server_branch.

Отправка всех веток на сервер

Просто пропишите вместо имени ветки -- all:

git push origin --all

Затем все закомиченные апдейты во всех ветках переносятся в удаленный репозиторий.

Отправка текущей ветки

Существует очень простой и популярный метод для отправки текущей ветки с тем же именем на сервере, а именно:

git push origin HEAD

В данном примере на текущую ветку указывает “HEAD”. Использование такого метода убирает необходимость в запоминании имени ветки, в которой вы сейчас работаете.

Принудительная публикация (git push — force …)

При попытке отправить публикацию может возникнуть ошибка Git push rejected. Она указывает на то, что пуш отклонили. Лучше всего обратиться к подсказке к ошибке, получив и смержив изменения, а затем повторно их отправить.

Данная проблема может появится в том случае, когда git проверяет, что созданный вами коммит формируется на базе предыдущих коммитов. В то время, как вы работали с частью кода, другие разработчики могли редактировать ту же часть, что и вы. Именно поэтому git не сможет провести автоматическое слияние, а ваш коммит существовал ранее и не базируется на измененных коммитах в удаленном репозитории.

Для отключения проверки коммитов и при потребности в перезаписи истории используется флаг -- force, или же его сокращенная версия - f:

git push --force

Важно! Эту команду нужно использовать с осторожностью и только иногда, так как в этом случае коммиты других разработчиков команды будут стерты.

Принудительная публикация с параметром (git push — force-with-lease …)

Более безопасный вариант принудительного пушинга изменений, но так же нежелательный. Особенность данного метода заключается в том, что он не перезаписывает изменения в удаленной ветке тогда, когда в нее были внесены коммиты от других разработчиков: 

git push --force-with-lease

Но другие разработчики могут столкнуться с упомянутой выше ошибкой – Git push rejected

Как пушить в PhpStorm

Использовать пуш в PhpStorm достаточно просто. Изначально создайте новый проект, в правом углу среды разработки расположены распространенные команды git, среди которых команды для пушинга.

Незапушенные коммиты

Вы можете распознать коммиты, которые не запустились, следующим образом:

git status

В предоставленной информации будет находится название текущей ветки и то, превышает ли она версию сервера и насколько.

Также можно посмотреть лог с историей коммитов с помощью команды:

git log

Как пушить теги

Для создания тегов применяется git tag, а для отправки:

git push origin <tag_name>

Также можно использовать следующую команду для отправки абсолютно всех тегов:

git push --tags

Удаление ветки или тега на сервере

Вы можете легко удалить ветку на удаленном репозитории с помощью команды:

git push --delete origin <remote_branch_or_tag_name>

Удалить локальную ветку можно с использованием данной команды:

git branch --d <branch-name>

Для того, чтобы удалить локальный тег:

git tag --d <tag_name>

Продвинутые возможности

Удаление локальных данных (prune)

Удалить все имеющиеся локальные ветки, которые отсутствуют на сервере, можно с помощью следующей команды:

git remote prune origin

Проверить, удастся ли пушинг (dry run option)

Данная функция фактически не произведет пушинг, однако покажет вам вывод будто он получился:

git push --dry-run

Атомарный пушинг (atomic option)

Применяется, когда на сервер отправляется сразу множество веток с возможной опцией отклонения одних и успешного пушинга других. Если необходимо, чтобы отправились все ветки, либо все были отклонены используйте команду:

git push --atomic origin branch1 branch2 …

Заключение

В данном обзоре мы разобрались с самыми популярными методами применения git push. Однако реальные возможности данной команды намного шире. Вы можете самостоятельно с ними ознакомится благодаря документации:

git push --help
Новости
27 декабря 202327.12.2023
Продуктовый дайджест 2023
20 декабря 202320.12.2023
читать 2 минутычитать 2 мин
Новые тарифы и возможности