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.54.0 no changes
-
2.53.0
2026-02-02
- 2.50.1 → 2.52.0 no changes
-
2.50.0
2025-06-16
- 2.48.1 → 2.49.1 no changes
-
2.48.0
2025-01-10
- 2.46.1 → 2.47.3 no changes
-
2.46.0
2024-07-29
- 2.45.1 → 2.45.4 no changes
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 no changes
-
2.43.0
2023-11-20
- 2.30.1 → 2.42.4 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.27.1 → 2.28.1 no changes
-
2.27.0
2020-06-01
- 2.19.3 → 2.26.3 no changes
-
2.19.2
2018-11-21
- 2.18.1 → 2.19.1 no changes
-
2.18.0
2018-06-21
- 2.7.6 → 2.17.6 no changes
-
2.6.7
2017-05-05
- 2.2.3 → 2.5.6 no changes
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
ОБЗОР
gitupdate-ref[-m<причина>] [--no-deref]-d<ссылка> [<старый-oid>]gitupdate-ref[-m<причина>] [--no-deref] [--create-reflog] <ссылка> <новый-oid> [<старый-oid>]gitupdate-ref[-m<причина>] [--no-deref]--stdin[-z] [--batch-updates]
ОПИСАНИЕ
При наличии двух аргументов сохраняет <новый-oid> в <ссылке>, возможно, разыменовывая символьные ссылки. Например, git update-ref HEAD <новый-oid> обновляет голову текущей ветки до нового объекта.
При наличии трёх аргументов сохраняет <новый-oid> в <ссылке>, возможно, разыменовывая символьные ссылки, после проверки того, что текущее значение <ссылки> соответствует <старому-oid>. Например, git update-ref refs/heads/master <новый-oid> <старый-oid> обновляет голову ветки master до <новый-oid>, только если её текущее значение равно <старый-oid>. Вы можете указать 40 "0" или пустую строку в качестве <старого-oid>, чтобы убедиться, что создаваемая вами ссылка не существует.
Последние аргументы — это имена объектов; эта команда без каких-либо параметров не поддерживает обновление символьной ссылки, чтобы она указывала на другую ссылку (см. git-symbolic-ref[1]). Но git update-ref --stdin имеет команды symref-*, так что обычные ссылки и символьные ссылки могут быть зафиксированы в одной транзакции.
Если указан --no-deref, перезаписывается сама <ссылка>, а не результат перехода по символьным указателям.
С -d удаляет указанную <ссылку> после проверки того, что она всё ещё содержит <старый-oid>.
С --stdin update-ref читает инструкции из стандартного ввода и выполняет все изменения вместе. Укажите команды следующего вида:
update SP <ссылка> SP <новый-oid> [SP <старый-oid>] LF create SP <ссылка> SP <новый-oid> LF delete SP <ссылка> [SP <старый-oid>] LF verify SP <ссылка> [SP <старый-oid>] LF symref-update SP <ссылка> SP <новая-цель> [SP (ref SP <старая-цель> | oid SP <старый-oid>)] LF symref-create SP <ссылка> SP <новая-цель> LF symref-delete SP <ссылка> [SP <старая-цель>] LF symref-verify SP <ссылка> [SP <старая-цель>] LF option SP <опция> LF start LF prepare LF commit LF abort LF
С --create-reflog update-ref создаст журнал ссылок для каждой ссылки, даже если обычно он не создаётся.
С --batch-updates update-ref выполняет обновления в пакетном режиме, но позволяет отдельным обновлениям завершаться ошибкой из-за недопустимого или неправильного ввода пользователя, применяя только успешные обновления. Однако системные ошибки, такие как сбои ввода-вывода или проблемы с памятью, приведут к полному сбою всех пакетных обновлений. Любые неудачные обновления будут сообщены в следующем формате:
rejected SP (<старый-oid> | <старая-цель>) SP (<новый-oid> | <новая-цель>) SP <причина-отказа> LF
Заключайте поля, содержащие пробелы, в кавычки, как если бы они были строками в исходном коде C; т.е. окружённые двойными кавычками и с escape-последовательностями с обратной косой чертой. Используйте 40 символов "0" или пустую строку, чтобы указать нулевое значение. Чтобы указать отсутствующее значение, полностью опустите значение и предшествующий ему SP.
В качестве альтернативы используйте -z, чтобы указать в формате с завершением NUL, без кавычек:
update SP <ссылка> NUL <новый-oid> NUL [<старый-oid>] NUL create SP <ссылка> NUL <новый-oid> NUL delete SP <ссылка> NUL [<старый-oid>] NUL verify SP <ссылка> NUL [<старый-oid>] NUL symref-update SP <ссылка> NUL <новая-цель> [NUL (ref NUL <старая-цель> | oid NUL <старый-oid>)] NUL symref-create SP <ссылка> NUL <новая-цель> NUL symref-delete SP <ссылка> [NUL <старая-цель>] NUL symref-verify SP <ссылка> [NUL <старая-цель>] NUL option SP <опция> NUL start NUL prepare NUL commit NUL abort NUL
В этом формате используйте 40 символов "0", чтобы указать нулевое значение, и используйте пустую строку, чтобы указать отсутствующее значение.
В любом формате значения могут быть указаны в любой форме, которую Git распознаёт как имя объекта. Команды в любом другом формате или с повторяющейся <ссылкой> вызывают ошибку. Значения команд:
- update
-
Установить <ссылку> в <новый-oid> после проверки <старого-oid>, если он указан. Укажите нулевой <новый-oid>, чтобы гарантировать, что ссылка не существует после обновления, и/или нулевой <старый-oid>, чтобы убедиться, что ссылка не существует до обновления.
- create
-
Создать <ссылку> с <новый-oid> после проверки того, что она не существует. Указанный <новый-oid> не может быть нулевым.
- delete
-
Удалить <ссылку> после проверки того, что она существует с <старый-oid>, если он указан. Если указан, <старый-oid> не может быть нулевым.
- symref-update
-
Установить <ссылку> в <новая-цель> после проверки <старая-цель> или <старый-oid>, если они указаны. Укажите нулевой <старый-oid>, чтобы гарантировать, что ссылка не существует до обновления.
- verify
-
Проверить <ссылку> на соответствие <старому-oid>, но не изменять её. Если <старый-oid> нулевой или отсутствует, ссылка не должна существовать.
- symref-create
-
Создать символьную ссылку <ссылка> с <новая-цель> после проверки того, что она не существует.
- symref-delete
-
Удалить <ссылку> после проверки того, что она существует с <старая-цель>, если она указана.
- symref-verify
-
Проверить символьную <ссылку> на соответствие <старая-цель>, но не изменять её. Если <старая-цель> отсутствует, ссылка не должна существовать. Может использоваться только в режиме
no-deref. - option
-
Изменить поведение следующей команды, указывающей <ссылку>. Единственным допустимым параметром является
no-deref, чтобы избежать разыменования символьной ссылки. - старт
-
Начать транзакцию. В отличие от нетранзакционного сеанса, транзакция будет автоматически прервана, если сеанс завершится без явной фиксации. Эта команда может создать новую пустую транзакцию, когда текущая уже была зафиксирована или прервана.
- prepare
-
Подготовиться к фиксации транзакции. Это создаст файлы блокировки для всех поставленных в очередь обновлений ссылок. Если одну ссылку не удалось заблокировать, транзакция будет прервана.
- коммит
-
Зафиксировать все обновления ссылок, поставленные в очередь для транзакции, завершая транзакцию.
- прервать
-
Прервать транзакцию, снимая все блокировки, если транзакция находится в состоянии подготовки.
Если все <ссылки> могут быть заблокированы одновременно с соответствующими <старыми-oid>, выполняются все изменения. В противном случае изменения не выполняются. Обратите внимание, что хотя каждая отдельная <ссылка> обновляется или удаляется атомарно, параллельный читатель всё равно может видеть подмножество изменений.
ЖУРНАЛИРОВАНИЕ ОБНОВЛЕНИЙ
Если параметр конфигурации "core.logAllRefUpdates" имеет значение true и ссылка находится в "refs/heads/", "refs/remotes/", "refs/notes/" или является псевдоссылкой, такой как HEAD или ORIG_HEAD; или если существует файл "$GIT_DIR/logs/<ссылка>", то git update-ref добавит строку в файл журнала "$GIT_DIR/logs/<ссылка>" (разыменовывая все символьные ссылки перед созданием имени журнала), описывающую изменение значения ссылки. Строки журнала форматируются как:
старый-sha1 SP новый-sha1 SP коммиттер LF
Где «старый-sha1» — это 40-символьное шестнадцатеричное значение, ранее хранившееся в <ссылке>, «новый-sha1» — это 40-символьное шестнадцатеричное значение <нового-oid>, а «коммиттер» — это имя коммиттера, адрес электронной почты и дата в стандартном формате идентификатора коммиттера Git.
Опционально с -m:
старый-sha1 SP новый-sha1 SP коммиттер TAB сообщение LF
Где все поля такие, как описано выше, а «сообщение» — это значение, предоставленное параметру -m.
Обновление завершится ошибкой (без изменения <ссылки>), если текущий пользователь не может создать новый файл журнала, добавить данные в существующий файл журнала или не имеет доступной информации о коммиттере.
ЗАМЕТКИ
Символьные ссылки изначально были реализованы с использованием символьных ссылок файловой системы. Теперь это устарело, поскольку не все файловые системы поддерживают символьные ссылки.
Эта команда переходит по реальным символьным ссылкам, только если они начинаются с "refs/": в противном случае она просто попытается прочитать их и обновить как обычный файл (т.е. она позволит файловой системе перейти по ним, но перезапишет такую символьную ссылку, указывающую куда-то ещё, обычным именем файла).
GIT
Является частью пакета git[1]