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.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[<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>…gitrestore[<options>] [--source=<tree>] [--staged] [--worktree]--pathspec-from-file=<file> [--pathspec-file-nul]gitrestore(-p|--patch) [<options>] [--source=<tree>] [--staged] [--worktree] [--] [<pathspec>…]
ОПИС
Відновлює вказані шляхи в робочому дереві вмістом з джерела відновлення. Якщо шлях відстежується, але не існує в джерелі відновлення, його буде видалено, щоб він відповідав джерелу.
Команду також можна використовувати для відновлення вмісту індексу за допомогою --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 -
Команда дозволяє в інтерактивному режимі вибирати фрагменти у відмінностях (diff) між джерелом відновлення та місцем відновлення. Дивіться розділ «Інтерактивний режим» у git-add[1], щоб дізнатися, як керувати режимом
--patch. -
-U<n> -
--unified=<n> -
Створює файли відмінностей (diff) з <n> рядками контексту. Стандартно використовується
diff.contextабо 3, якщо параметр конфігурації не встановлено. -
--inter-hunk-context=<n> -
Показує контекст між фрагментами відмінностей (diff hunks), до вказаної <кількості> рядків, таким чином обʼєднуючи фрагменти, що знаходяться близько один до одного. Стандартно використовується значення
diff.interHunkContextабо 0, якщо параметр конфігурації не встановлено.
-
-W -
--worktree -
-S -
--staged -
Визначає місце відновлення. Якщо не вказано жодного з параметрів, зазвичай відновлюється робоче дерево. Вказання
--stagedвідновить лише індекс. Вказання обох параметрів відновить обидва. -
-q -
--quiet -
Виводу немає, повідомлення зворотного звʼязку відкидаються. Мається на увазі
--no-progress. -
--progress -
--no-progress -
Повідомлення про стан виконання зазвичай зʼявляються у стандартному потоці помилок, коли він підключений до термінала, якщо не вказано
--quiet. Цей прапорець дозволяє повідомляти про хід виконання, навіть якщо він не підключений до термінала, незалежно від--quiet. -
--ours -
--theirs -
Під час відновлення файлів у робочому дереві з індексу використовуйте stage #2 (
ours) або #3 (theirs) для необʼєднаних шляхів. Цей параметр не можна використовувати під час перевірки шляхів з деревоподібної структури (тобто з параметром--source).Зверніть увагу, що під час виконання команд
gitrebaseтаgitpull--rebase,oursтаtheirsможуть помінятися місцями. Дивіться пояснення цих самих опцій у git-checkout[1] для отримання детальної інформації. -
-m -
--merge -
Під час відновлення файлів у робочому дереві з індексу, відтворює конфліктне злиття у необʼєднаних шляхах. Цей параметр не можна використовувати під час перевірки шляхів з деревоподібного елемента (тобто з параметром
--source). -
--conflict=<стиль> -
Те саме, що й опція
--mergeвище, але змінює спосіб представлення фрагментів з конфліктами, перевизначаючи змінну конфігураціїmerge.conflictStyle. Можливі значення:merge(стандартно),diff3таzdiff3. -
--ignore-unmerged -
Під час відновлення файлів в робочому дереві з індексу не переривати виконання, якщо є необʼєднані записи, і не вказано ні
--ours,--theirs,--merge,--conflict. Необ’єднані шляхи в робочому дереві залишаються без змін. -
--ignore-skip-worktree-bits -
У режимі вибіркового перемикання зазвичай оновлюються лише записи, що відповідають <специфікатору-шляху> та вибірковим шаблонам у
$GIT_DIR/info/sparse-checkout. Цей параметр ігнорує вибіркові шаблони та безумовно відновлює будь-які файли в <специфікаторі-шляху>. -
--recurse-submodules -
--no-recurse-submodules -
Якщо <специфікатор-шляху> вказує на активний субмодуль, а місце відновлення містить робоче дерево, субмодуль буде оновлено лише за наявності цієї опції, і в цьому випадку його робоче дерево буде відновлено до коміту, записаного в суперпроєкті, а будь-які локальні зміни будуть перезаписані. Якщо нічого не використовується (або
--no-recurse-submodules), робочі дерева субмодулів не будуть оновлені. Так само як і git-checkout[1], це від’єднаєHEADсубмодуля. -
--overlay -
--no-overlay -
У режимі накладання ніколи не видаляти файли під час відновлення. У режимі без накладання видаляти відстежувані файли, які не відображаються в <tree>
--source=<tree>, щоб вони точно відповідали <tree>. Зазвичай використовується режим без накладання. -
--pathspec-from-file=<файл> -
Специфікатор шляху передається у <файл> замість аргументів командного рядка. Якщо <файл> дорівнює
-, то використовується стандартний ввід. Елементи специфікатора шляху розділяються символами LF або CR/LF. Елементи специфікатора шляху можна брати в лапки, як це пояснено для змінної конфігураціїcore.quotePath(див. git-config[1]). Див. також--pathspec-file-nulта глобальну змінну--literal-pathspecs. -
--pathspec-file-nul -
Має сенс лише з
--pathspec-from-file. Елементи Pathspec розділяються символом NUL, а всі інші символи (включно з символами нового рядка та лапками) сприймаються буквально. -
-- -
Не інтерпретує жодних додаткових аргументів як опції.
- <pathspec>...
-
Обмежує шляхи, на які впливає операція.
Для отримання додаткової інформації див. елемент «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 .
або відновити всі робочі файли дерева за допомогою магічних виразів pathspec 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]