Git: git push

Spread the love

Команда

Команда Git push отправляет локальную ветку на удаленный репозиторий.

Команда

git push

используется для выгрузки содержимого локального репозитория в удалённый репозиторий.

Команда позволяет передавать коммиты из локального репозитория в удалённый, например, отправить локальную ветку на облачный репозиторий, и помогает разработчикам синхронизировать свою работу в проекте с другими участниками команды, когда коммитер считает необходимым, то производит отправку сделанных им изменений с локального репозитория на общий.

100000R, 12%, 1 year

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

Для обратной синхронизации сервера с локальным репозиторием используется команда

git pull

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

git remote

Перед началом работы следует установить соединение локального и облачного репозиториев, между которыми будет происходить обмен данными, с помощью команды

git remote add <repository_name> link,

где repository_name – имя удалнного репозитория (условно обозначим его cloud).
В зависимости от протокола соединения – ssh или https – вместо link может быть другая команда. Протокол ssh обязателен для github и gitlab. К тому же необходимо дополнительно создать ssh-ключ.
Отправка изменений в облачный репозиторий происходит следующим образом:

  1. Фиксируются текущие изменения командой git commit;
  2. Вводится в терминал команда git push cloud <branch>, где branch — имя ветки, которую следует отправить в облако (при отправлении главной ветки используется master (main): git push cloud master).

Чтобы ускорить обмен данными команду можно сократить до git push, но перед этим следует выполнить вышеприведённую команду с флагом -u:
git push -u cloud master
Сервис git запоминает, что отправлять в облако надо ветку cloud с именем master. Далее используем только:
git push.

Для отправки другой (не главной) ветки применяем синтаксис:
git push cloud branch: server_branch
где branch – имя локальной (не главной) ветки, server_branch – имя (не главной) ветки на сервере.

Если необходимо отправить на сервер всё сделанное в локальном репозитории, применяется команда:
git push cloud –all, где вместо имён веток применяется флаг —all

Отправка текущей ветки производится командой:
git push cloud HEAD
HEAD указывает на текущую ветку (current branch).

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

Например, если при отправке вышло сообщение об ошибке публикации:
To github.com: example/test.git
! [rejected] master -> master (fetch first) error: не удалось отправить некоторые ссылки в «github.com:example/test.git»
, где rejected означает, что пуш был отклонён системой, поскольку git проверила новый коммит и определила, что пока коммитер вносил изменения в свою часть проекта, кто-то другой добавил свои изменения в то, над чем исполнитель работает, а потому git не может выполнить автоматическое слияние, потому что последний коммит не основан на ранее возникших в ветке в удалённом репозитории обновлениях.
Это можно проигнорировать с помощью флага —force (сокращённо –f)
git push –force
, что отключает проверку ранее внесённых коммитов и производит перезапись истории изменений.

Однако следует иметь ввиду, что данной командой производится стирание изменений, внесённых другими участниками в проект. Поэтому такую команду следует применять с предельной осторожностью, например, если сразу внесены изменения коммита с помощью git commit —amend, до того, как кто-то другой сделал git pull.

Более безопасно производить принудительную публикацию с параметром
git push –force-with-lease , поскольку перезапись в удалённой ветке не произойдёт, если в неё были внесены коммиты от других исполнителей. Хотя применять этот вариант следует также осторожно, поскольку принудительная публикация с таким параметром произведёт git push rejected у других исполнителей.


Spread the love

Добавить комментарий