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
作業ツリー内の指定のパスを、 復元元(restore source)からのコンテンツで復元(restore)します。 パスが追跡されているが復元元に存在しない場合、 復元元に合わせて削除されます。
このコマンドを使用して、 --staged を使用してインデックスのコンテンツを復元したり、 --staged--worktree を使用して作業ツリーとインデックスの両方を復元したりすることもできます。
デフォルトでは、 --staged が指定されている場合、コンテンツは HEAD から復元され、そうでない場合はインデックスから復元されます。別のコミットから復元するには、 --source を使用します。
3つのコマンドの違いについては、 git(1) の "Reset, restore and revert" を参照してください。
!!このコマンドは実験的なものです。 動作が変わる可能性があります!!
OPTIONS
-
-s<tree> -
--source=<tree> -
指定のツリーのコンテンツを使用して、作業ツリーファイルを復元します。ソースツリーに関連付けられているコミット、ブランチ、またはタグに名前を付けてソースツリーを指定するのが一般的です。
このオプションを指定しない場合で、
--stagedが指定されている場合はHEADから、それ以外の場合はインデックスから内容が復元されます。特別な場合として、マージベースが1つしかない場合は、
AとBのマージベースのショートカットとしてA...Bを使用できます。AとBの片方を省略できます。その場合、省略した方はデフォルトで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)を使用します。 このオプションは、 ツリーっぽい何か(tree-ish)からパスをチェックアウトする際(つまり--sourceオプションを使用する場合)には使用できません。注意:
gitrebaseやgitpull--rebaseでの作業中、「ours」と「theirs」が入れ替わっているように見える場合があることに注意してください。 詳細については、 git-checkout(1) の同一オプションの説明を参照してください。 -
-m -
--merge -
作業ツリー上のファイルをインデックスから復元する場合は、マージされていないパスで競合するマージを再作成します。 このオプションは、ツリーっぽい何か(tree-ish)からパスをチェックアウトする際(つまり
--sourceオプションを使用する場合)には使用できません。 -
--conflict=<style> -
上記の
--mergeオプションと同じですが、競合するハンクの表示方法を変更し、merge.conflictStyle構成変数をオーバーライドします。 可能な値は、merge(デフォルト) とdiff3とzdiff3です。 -
--ignore-unmerged -
作業ツリー上のファイルをインデックスから復元するときに、マージされていないエントリがあり、
--ours、--theirs、--mergeまたは--conflictのいずれも指定されていない場合は、操作を中止しないでください。作業ツリー上のマージされていないパスはそのままになります。 -
--ignore-skip-worktree-bits -
スパース・チェックアウト・モードは、 デフォルトでは、 <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>
-
別のコミットからファイルを取り出します
-
インデックスから hello.c を復元します。
あなたが、インデックス内のバージョンと一致するように「すべての」Cソースファイルを復元する場合は、以下のように書くことができます。
$ git restore '*.c'
注意: *.c を囲む引用符に注意してください。 ファイル hello.c は、作業ツリーに存在しなくても復元されます。 *.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