Русский ▾ Topics ▾ Latest version ▾ git-send-pack last updated in 2.52.0

НАЗВАНИЕ

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)]
		[<хост>:]<каталог> (--all | <ссылка>…​)

ОПИСАНИЕ

Обычно вместо этого вы захотите использовать 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

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

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

--dry-run

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

--force

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

--verbose

Работать подробно (verbose).

--thin

Отправляет «тонкий» пакет, который записывает объекты в дельтифицированной форме на основе объектов, не включённых в пакет, для уменьшения сетевого трафика.

--atomic

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

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

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

--push-option=<string>

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

<host>

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

<directory>

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

<ref>…​

Внешние ссылки для обновления.

ОПРЕДЕЛЕНИЕ ССЫЛОК

Существует три способа указать, какие ссылки обновлять на внешней стороне.

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

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

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

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

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

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

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

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

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

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

С --force проверка перемотки вперёд отключена для всех ссылок.

Опционально, параметру <ссылка> может предшествовать знак плюса +, чтобы отключить проверку перемотки вперёд только для этой ссылки.

GIT

Является частью пакета git[1]