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
2026-04-20
- 2.51.1 → 2.53.0 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
- 2.50.0 no changes
- 2.49.1 no changes
-
2.49.0
2025-03-14
- 2.43.1 → 2.48.2 no changes
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 no changes
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 no changes
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 no changes
-
2.27.0
2020-06-01
- 2.25.1 → 2.26.3 no changes
-
2.25.0
2020-01-13
- 2.23.1 → 2.24.4 no changes
-
2.23.0
2019-08-16
ОБЗОР
gitrestore[<параметры>] [--source=<дерево>] [--staged] [--worktree] [--] <спецификатор-пути>…gitrestore[<параметры>] [--source=<дерево>] [--staged] [--worktree]--pathspec-from-file=<файл> [--pathspec-file-nul]gitrestore(-p|--patch) [<параметры>] [--source=<дерево>] [--staged] [--worktree] [--] [<спецификатор-пути>…]
ОПИСАНИЕ
Восстанавливает указанные пути в рабочем каталоге с некоторым содержимым из источника восстановления. Если путь отслеживается, но не существует в источнике восстановления, он будет удалён, чтобы соответствовать источнику.
Команда также может использоваться для восстановления содержимого в индексе с помощью --staged или для восстановления как рабочего каталога, так и индекса с помощью --staged --worktree.
По умолчанию, если указан --staged, содержимое восстанавливается из HEAD, в противном случае — из индекса. Используйте --source, чтобы восстановить из другого коммита.
См. "Сброс, восстановление и отмена" в git[1] для получения информации о различиях между тремя командами.
ПАРАМЕТРЫ
-
-s<дерево> -
--source=<дерево> -
Восстанавливает файлы рабочего каталога с содержимым из заданного дерева. Обычно исходное дерево указывается именованием связанного с ним коммита, ветки или метки.
Если не указано, содержимое восстанавливается из
HEAD, если указан--staged, в противном случае — из индекса.В качестве особого случая вы можете использовать
"<rev-A>...<rev-B>"как сокращение для базы слияния <rev-A> и <rev-B>, если существует ровно одна база слияния. Вы можете опустить не более одного из <rev-A> и <rev-B>, и в этом случае по умолчанию используетсяHEAD. -
-p -
--patch -
Интерактивно выбирать фрагменты в разнице между источником восстановления и местом восстановления. См. раздел "Интерактивный режим" в git-add[1], чтобы узнать, как работать в режиме
--patch. -
-U<n> -
--unified=<n> -
Создавать сравнения с <число> строками контекста. Количество строк контекста по умолчанию равно
diff.contextили 3, если переменная конфигурации не установлена. (-Uбез <числа> молча принимается как синоним-pиз-за исторической случайности). -
--inter-hunk-context=<n> -
Выводить в качестве контекста между блоками изменений до <n> строк, тем самым объединяя близкие блоки изменений. По умолчанию равно значению переменной конфигурации
diff.interHunkContextили 0, если она не установлена.
-
-W -
--worktree -
-S -
--staged -
Указывает местоположение для восстановления. Если ни один из параметров не указан, по умолчанию восстанавливается рабочий каталог. Указание
--stagedвосстановит только индекс. Указание обоих восстанавливает и то, и другое. -
-q -
--quiet -
Тихий режим, подавлять информационные сообщения. Подразумевает
--no-progress. -
--progress -
--no-progress -
Ход выполнения по умолчанию выводится в стандартный поток ошибок, если он подключён к терминалу, если не указан
--quiet. Этот флаг включает вывод хода выполнения, даже если он не подключён к терминалу, независимо от--quiet. -
--ours -
--theirs -
При восстановлении файлов в рабочем каталоге из индекса использовать этап #2 (
ours) или #3 (theirs) для неслитых (unmerged) путей. Этот параметр нельзя использовать при переключении путей из указателя-дерева (т.е. с параметром--source).Обратите внимание, что во время
gitrebaseиgitpull--rebaseзначенияoursиtheirsмогут поменяться местами. Подробности см. в объяснении тех же параметров в git-checkout[1]. -
-m -
--merge -
При восстановлении файлов в рабочем каталоге из индекса воссоздать конфликтное слияние в неслитых (unmerged) путях. Этот параметр нельзя использовать при переключении путей из указателя-дерева (т.е. с параметром
--source). -
--conflict=<стиль> -
То же, что и параметр
--mergeвыше, но изменяет способ представления конфликтующих блоков, переопределяя переменную конфигурацииmerge.conflictStyle. Возможные значения:merge(по умолчанию),diff3иzdiff3. -
--ignore-unmerged -
При восстановлении файлов в рабочем каталоге из индекса не прерывать операцию, если есть неслитые (unmerged) записи и не указаны ни
--ours, ни--theirs, ни--merge, ни--conflict. Неслитые пути в рабочем каталоге остаются нетронутыми. -
--ignore-skip-worktree-bits -
В режиме частичного переключения (sparse checkout) по умолчанию обновляются только записи, соответствующие <спецификатор-пути> и разрежённым шаблонам в
$GIT_DIR/info/sparse-checkout. Этот параметр игнорирует разрежённые шаблоны и безусловно восстанавливает любые файлы в <спецификатор-пути>. -
--recurse-submodules -
--no-recurse-submodules -
Если <спецификатор-пути> указывает на активный подмодуль и местоположение восстановления включает рабочий каталог, подмодуль будет обновлён только в том случае, если указан этот параметр, и в этом случае его рабочий каталог будет восстановлен до коммита, записанного в суперпроекте, а любые локальные изменения будут перезаписаны. Если ничего (или
--no-recurse-submodules) не используется, рабочие каталоги подмодулей не будут обновляться. Как и в git-checkout[1], это отсоединитHEADподмодуля. -
--overlay -
--no-overlay -
В режиме наложения (overlay) никогда не удалять файлы при восстановлении. В режиме без наложения (no-overlay) удалять отслеживаемые файлы, которые не появляются в <дерево> из
--source=<дерево>, чтобы они точно соответствовали <дерево>. По умолчанию используется режим без наложения. -
--pathspec-from-file=<файл> -
Спецификатор пути передаётся в <файле>, а не в аргументах командной строки. Если <файл> точно равен
-, то используется стандартный ввод. Элементы спецификатора пути разделяются символами LF или CR/LF. Элементы спецификатора пути могут заключаться в кавычки, как объяснено для переменной конфигурацииcore.quotePath(см. git-config[1]). См. также--pathspec-file-nulи глобальный--literal-pathspecs. -
--pathspec-file-nul -
Имеет значение только при указании
--pathspec-from-file. Элементы спецификатора пути отделяются друг от друга с помощью NUL-символа, а все остальные символы интерпретируются буквально (включая кавычки и переводы строк). -
-- -
Не рассматривать остальные аргументы командной строки в качестве параметров.
- <спецификатор-пути>…
-
Ограничивает пути, на которые влияет операция.
Более подробно описание см. в параграфе спецификатор пути (pathspec) в gitglossary[7].
ПРИМЕРЫ
Следующая последовательность переключается на ветку master, возвращает Makefile на две редакции назад, случайно удаляет hello.c и возвращает его из индекса.
$ git switch master $ git restore --source master~2 Makefile (1) $ rm -f hello.c $ git restore hello.c (2)
-
извлечь файл из другого коммита
-
восстановление
hello.cиз индекса
Если вы хотите восстановить все C-файлы исходного кода, чтобы они соответствовали версии в индексе, вы можете выполнить
$ git restore '*.c'
Обратите внимание на кавычки вокруг *.c. Файл hello.c также будет восстановлен, даже если его больше нет в рабочем каталоге, потому что подстановка файлов используется для сопоставления записей в индексе (а не в рабочем каталоге оболочкой).
Чтобы восстановить все файлы в текущем каталоге
$ git restore .
или чтобы восстановить все файлы рабочего каталога с помощью волшебного спецификатора пути top (см. gitglossary[7])
$ git restore :/
Чтобы восстановить файл в индексе в соответствии с версией в HEAD (это то же самое, что и использование git-reset[1])
$ git restore --staged hello.c
или вы можете восстановить и индекс, и рабочий каталог (это то же самое, что и использование git-checkout[1])
$ git restore --source=HEAD --staged --worktree hello.c
или краткая форма, которая более практична, но менее читаема:
$ git restore -s@ -SW hello.c
GIT
Является частью пакета git[1]