Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.53.0 no changes
-
2.52.0
2025-11-17
- 2.45.2 → 2.51.2 no changes
-
2.45.1
2024-04-29
- 2.45.0 no changes
- 2.44.2 → 2.44.4 no changes
-
2.44.1
2024-04-19
- 2.44.0 no changes
- 2.43.5 → 2.43.7 no changes
-
2.43.4
2024-04-19
- 2.43.1 → 2.43.3 no changes
- 2.43.0 no changes
- 2.42.3 → 2.42.4 no changes
-
2.42.2
2024-04-19
- 2.42.1 no changes
- 2.42.0 no changes
- 2.41.2 → 2.41.3 no changes
-
2.41.1
2024-04-19
- 2.41.0 no changes
- 2.40.3 → 2.40.4 no changes
-
2.40.2
2024-04-19
- 2.40.1 no changes
- 2.40.0 no changes
- 2.39.5 no changes
-
2.39.4
2024-04-19
- 2.38.1 → 2.39.3 no changes
-
2.38.0
2022-10-02
- 2.34.1 → 2.37.7 no changes
-
2.34.0
2021-11-15
- 2.21.1 → 2.33.8 no changes
- 2.21.0 no changes
- 2.19.3 → 2.20.5 no changes
-
2.19.2
2018-11-21
- 2.11.4 → 2.19.1 no changes
-
2.10.5
2017-09-22
- 2.1.4 → 2.9.5 no changes
-
2.0.5
2014-12-17
ОБЗОР
git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc] [--advertise-refs] <каталог>
ОПИСАНИЕ
Вызывается git fetch-pack, узнаёт, каких объектов не хватает на другой стороне, и отправляет их после упаковки.
Эта команда обычно не вызывается напрямую конечным пользователем. Интерфейс для протокола находится на стороне git fetch-pack, и эта пара программ предназначена для извлечения (pull) обновлений из внешнего репозитория. Для операций отправки (push) смотрите git send-pack.
ПАРАМЕТРЫ
- --strict
- --no-strict
-
Не пытаться использовать <каталог>/.git/, если <каталог> не является каталогом Git.
- --timeout=<n>
-
Прервать передачу после <n> секунд простоя.
- --stateless-rpc
-
Выполнить только один цикл чтения-записи с stdin и stdout. Это соответствует модели обработки HTTP POST-запросов, где программа может прочитать запрос, записать ответ и должна завершиться.
- --http-backend-info-refs
-
Используется git-http-backend[1] для обслуживания запросов $GIT_URL/info/refs?service=git-upload-pack. Смотрите «Smart Clients» в gitprotocol-http[5] и «HTTP Transport» в документации gitprotocol-v2[5]. Также понимается git-receive-pack[1].
- <directory>
-
Репозиторий, из которого выполняется синхронизация.
ОКРУЖЕНИЕ
-
GIT_PROTOCOL -
Внутренняя переменная, используемая для согласования сетевого протокола. Администраторам серверов может потребоваться настроить некоторые транспорты, чтобы разрешить передачу этой переменной. Смотрите обсуждение в git[1].
-
GIT_NO_LAZY_FETCH -
При клонировании или получении (fetch) из частичного репозитория (т.е. такого, который сам был клонирован с
--filter), серверная сторонаupload-packможет нуждаться в получении дополнительных объектов из своего вышестоящего (upstream) репозитория для завершения запроса. По умолчаниюupload-packоткажется выполнять такое отложенное получение (lazy fetch), посколькуgitfetchможет выполнять произвольные команды, указанные в конфигурации и перехватчиках (hooks) исходного репозитория (аupload-packстарается быть безопасным для запуска даже в недоверенных каталогах.git).Это реализовано путём внутренней установки переменной
GIT_NO_LAZY_FETCHв1вupload-pack. Если вы хотите переопределить это (потому что вы получаете данные из частичного клона и уверены, что доверяете ему), вы можете явно установитьGIT_NO_LAZY_FETCHв0.
БЕЗОПАСНОСТЬ
Большинство команд Git не следует запускать в недоверенном каталоге .git (см. раздел SECURITY в git[1]). upload-pack старается избегать любых опасных параметров конфигурации или перехватчиков (hooks) из обслуживаемого репозитория, что делает безопасным клонирование недоверенного каталога и выполнение команд в полученном клоне.
Для дополнительного уровня безопасности вы можете запустить upload-pack от имени другого пользователя. Детали будут зависеть от платформы, но на многих системах вы можете выполнить:
git clone --no-local --upload-pack='sudo -u nobody git-upload-pack' ...
GIT
Является частью пакета git[1]