Spec-Zone.ru › Git

git-send-pack

Имя

git-send-pack - Отправка объектов по протоколу Git в другой репозиторий

Синтаксис

git send-pack [--mirror] [--dry-run] [--force]
                [--receive-pack=<git-receive-pack>]
                [--verbose] [--thin] [--atomic]
                [--[no-]signed | --signed=(true|false|if-asked)]
                [<host>:]<directory> (--all | <ref>…​)

Описание

Обычно вы захотите использовать git push, который является оболочкой более высокого уровня для этой команды, вместо этого. См. git-push[1].

Вызывает git-receive-pack в возможно удалённом репозитории и обновляет его из текущего репозитория, отправляя указанные ссылки.

Параметры

--receive-pack=<git-receive-pack>

Путь к программе git-receive-pack на удалённом конце. Иногда полезно при отправке в удалённый репозиторий по ssh, если программа не находится в каталоге по умолчанию в $PATH.

--exec=<git-receive-pack>

То же, что и --receive-pack=<git-receive-pack>.

--all

Вместо явного указания ссылок для обновления, обновить все ветки, которые существуют локально.

--stdin

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

Если --stateless-rpc указано вместе с этим параметром, то список ссылок должен быть в формате пакетов (pkt-line). Каждая ссылка должна находиться в отдельном пакете, а список должен заканчиваться пакетом завершения.

--dry-run

Выполнить все действия, кроме фактической отправки обновлений.

--force

Обычно команда отказывается обновлять удалённую ссылку, которая не является предком локальной ссылки, используемой для её перезаписи. Этот флаг отключает проверку. Это означает, что удалённый репозиторий может потерять коммиты; используйте его с осторожностью.

--verbose

Запустить в подробном режиме.

--thin

Отправить "тонкий" пакет, который записывает объекты в виде изменений (deltified form) на основе объектов, не включённых в пакет, чтобы уменьшить трафик сети.

--atomic

Использовать атомную транзакцию для обновления ссылок. Если какое-либо из обновлений ссылок завершится неудачно, весь push завершится неудачно, не изменяя ни одной ссылки.

--[no-]signed
--signed=(true|false|if-asked)

Подписать запрос на push с помощью GPG, чтобы позволить проверку хуками и/или ведение журнала на стороне получателя. Если false или --no-signed, попытка подписания не будет предпринята. Если true или --signed, push завершится неудачно, если сервер не поддерживает подписанные push. Если установлено if-asked, подписывать только в том случае, если сервер поддерживает подписанные push. Push также завершится неудачно, если фактический вызов gpg --sign завершится неудачно. См. git-receive-pack[1] для получения подробностей на стороне получателя.

--push-option=<string>

Передать указанную строку в качестве параметра push для использования хуками на стороне сервера. Если сервер не поддерживает параметры push, произойдёт ошибка. См. git-push[1] и githooks[5] для получения подробностей.

<host>

Удалённый хост, на котором расположен репозиторий. Когда эта часть указана, git-receive-pack вызывается через ssh.

<directory>

Репозиторий для обновления.

<ref>…​

Удалённые ссылки для обновления.

Указание ссылок

Существует три способа указать, какие ссылки обновить на удалённом конце.

С флагом --all, все ссылки, которые существуют локально, передаются на удалённую сторону. Вы не можете указать какие-либо <ref> если используете этот флаг.

Без --all и без каких-либо <ref>, обновляются ветки, которые существуют как на локальной, так и на удалённой стороне.

Когда один или несколько <ref> указаны явно (в командной строке или через --stdin), это может быть один шаблон или пара таких шаблонов, разделённых двоеточием ":" (это означает, что имя ссылки не может содержать двоеточие). Один шаблон <name> — это просто сокращение для <name>:<name>.

Каждая пара шаблонов состоит из исходной стороны (перед двоеточием) и целевой стороны (после двоеточия). Ссылка для отправки определяется по совпадению с исходной стороной, а место отправки определяется с использованием целевой стороны. Правила сопоставления ссылки — те же правила, что и у git rev-parse для разрешения имени символической ссылки. См. git-rev-parse[1].

  • Ошибка, если <src> не точно соответствует одной из локальных ссылок.

  • Ошибка, если <dst> соответствует более чем одной удалённой ссылке.

  • Если <dst> не соответствует никакой удалённой ссылке, то

    • она должна начинаться с "refs/"; <dst> используется как целевое значение буквально в этом случае.

    • <src> == <dst> и ссылка, соответствующая <src>, не должна существовать в наборе удалённых ссылок; ссылка, соответствующая <src> локально, используется как имя назначения.

Без --force, ссылка <src> сохраняется на удалённом конце только если <dst> не существует или <dst> является правильным подмножеством (т. е. предком) <src>. Эта проверка, известная как "проверка быстрого продолжения", выполняется, чтобы избежать случайной перезаписи удалённой ссылки и потери коммитов других людей оттуда.

С --force, проверка быстрого продолжения отключается для всех ссылок.

Необязательно, параметр <ref> можно префиксровать знаком плюс + для отключения проверки быстрого продолжения только для этой ссылки.

send-pack

© 2005–2026 Linus Torvalds and others
Licensed under the GNU General Public License version 2.
https://git-scm.com/docs/git-send-pack

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API