SYNOPSIS

git restore [<options>] [--source=<tree>] [--staged] [--worktree] [--] <pathspec>…
git restore [<options>] [--source=<tree>] [--staged] [--worktree] --pathspec-from-file=<file> [--pathspec-file-nul]
git restore (-p|--patch) [<options>] [--source=<tree>] [--staged] [--worktree] [--] [<pathspec>…]

DESCRIPTION

復元ソースからのコンテンツを使用して、作業ツリー内の指定されたパスを復元します。パスが追跡されているが、復元ソースに存在しない場合、復元ソースと一致するように削除されます。

このコマンドを使用して、 --staged を使用してインデックスのコンテンツを復元したり、 --staged--worktree を使用して作業ツリーとインデックスの両方を復元したりすることもできます。

デフォルトでは、 --staged が指定されている場合、コンテンツは HEAD から復元され、そうでない場合はインデックスから復元されます。別のコミットから復元するには、 --source を使用します。

3つのコマンドの違いについては、 git(1) の "Reset, restore and revert" を参照してください。

!!このコマンドは実験的なものです。 動作が変わる可能性があります!!

OPTIONS

-s <tree>
--source=<tree>

指定のツリーのコンテンツを使用して、作業ツリーファイルを復元します。ソースツリーに関連付けられているコミット、ブランチ、またはタグに名前を付けてソースツリーを指定するのが一般的です。

このオプションを指定しない場合で、 --staged が指定されている場合は HEAD から、それ以外の場合はインデックスから内容が復元されます。

特別な場合として、マージベースが1つしかない場合は、 AB のマージベースのショートカットとして A...B を使用できます。 AB の片方を省略できます。その場合、省略した方はデフォルトで HEAD になります。

-p
--patch

復元ソースと復元場所の違いでハンクを対話的に選択します。 --patch モードの操作方法については、 git-add(1) の「Interactive Mode」セクションを参照してください。

注意: --patch はpathspecを受け入れることができず、変更されたすべてのパスを復元するように求められることに注意してください。

-W
--worktree
-S
--staged

復元場所を指定します。どちらのオプションも指定されていない場合、デフォルトで作業ツリーが復元されます。 --staged を指定すると、インデックスのみが復元されます。両方を指定すると、両方が復元されます。

-q
--quiet

静かにします。フィードバックメッセージを抑制します。 --no-progress を含んでいます。

--progress
--no-progress

--quiet が指定されていない限り、進行状況は、端末に接続されている場合、デフォルトで標準エラーストリームに報告されます。このフラグは、 --quiet に関係なく、端末に接続されていない場合でも進行状況のレポートを有効にします。

--ours
--theirs

作業ツリー内のファイルをインデックスから復元する場合は、マージされていないパスにステージ#2(ours)または#3(theirs)を使用します。

注意: git rebase`と `git pull --rebase での作業中、「ours」と「theirs」が入れ替わっているように見える場合があることに注意してください。 詳細については、 git-checkout(1) の同じオプションの説明を参照してください。

-m
--merge

作業ツリー上のファイルをインデックスから復元する場合は、マージされていないパスで競合するマージを再作成してください。

--conflict=<style>

上記の --merge オプションと同じですが、競合するハンクの表示方法を変更し、 merge.conflictStyle 構成変数をオーバーライドします。 可能な値は、merge(デフォルト) と diff3zdiff3 です。

--ignore-unmerged

作業ツリー上のファイルをインデックスから復元するときに、マージされていないエントリがあり、 --ours--theirs--merge または --conflict のいずれも指定されていない場合は、操作を中止しないでください。作業ツリー上のマージされていないパスはそのままになります。

--ignore-skip-worktree-bits

スパースチェックアウトモード(sparse checkout mode)では、デフォルトでは、 <pathspec> に一致するエントリと、 $GIT_DIR/info/sparse-checkout のスパースパターンのみが更新されます。このオプションは、スパースパターンを無視し、 <pathspec> 内のすべてのファイルを無条件に復元します。

--recurse-submodules
--no-recurse-submodules

<pathspec> がアクティブなサブモジュールを指定し、復元場所に作業ツリーが含まれている場合、このオプションが指定されている場合にのみサブモジュールが更新されます。この場合、その作業ツリーはスーパープロジェクトに記録されたコミットに復元されます。ローカルの変更は上書きされます。何も使用されていない場合(または --no-recurse-submodules の場合)、サブモジュールの作業ツリーは更新されません。 git-checkout(1) と同様に、これはサブモジュールの HEAD を切り離します(detach)。

--overlay
--no-overlay

オーバーレイモード(overlay mode)では、コマンドは復元時にファイルを削除しません。オーバーレイなしモード(no-overlay mode)では、 --source ツリーに表示されない追跡ファイルが削除され、 <tree> と完全に一致するようになります。 デフォルトはオーバーレイなしモード(no-overlay mode)です。

--pathspec-from-file=<file>

pathspecは、コマンドライン引数の代わりに <file> で渡されます。 <file> が正確に - の場合、標準入力が使用されます。pathspec要素はLFまたはCR/LFで区切られます。pathspec要素は、構成変数 core.quotePath で説明されているように引用できます(git-config(1) 参照)。 --pathspec-file-nul およびグローバルの --literal-pathspecs も参照してください。

--pathspec-file-nul

--pathspec-from-file でのみ意味があります。pathspec要素はNUL文字で区切られ、他のすべての文字は文字通りに解釈されます(改行と引用符を含む)。

--

これより後ろの引数をオプションとして解釈しないでください。

<pathspec>…

操作の影響を受けるパスを制限します。

詳細については、 gitglossary(7) の「pathspec」エントリを参照してください。

EXAMPLES

以下のシーケンスは、 master ブランチに切り替え、Makefile を2つ前のリビジョンに戻し、誤って hello.c を削除して、インデックスから戻します。

$ git switch master
$ git restore --source master~2 Makefile  <1>
$ rm -f hello.c
$ git restore hello.c                     <2>
  1. 別のコミットからファイルを取り出します

  2. インデックスから hello.c を復元します。

あなたが、インデックス内のバージョンと一致するように「すべての」Cソースファイルを復元する場合は、以下のように書くことができます。

$ git restore '*.c'

注意: *.c を囲む引用符に注意してください。 ファイル hello.c は、作業ツリーに存在しなくなった場合でも復元されます。これは、ファイルグロブがインデックス内のエントリを照合するために使用されるためです(シェルによる作業ツリー内ではありません)。

現在のディレクトリ内のすべてのファイルを復元するには

$ git restore .

または、top pathspec魔法を使用してすべての作業ツリーファイルを復元します(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

SEE ALSO

GIT

Part of the git(1) suite