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つしかない場合は、
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
)を使用します。注意:
git rebase`と `git pull --rebase
での作業中、「ours」と「theirs」が入れ替わっているように見える場合があることに注意してください。 詳細については、 git-checkout(1) の同じオプションの説明を参照してください。 -
-m
-
--merge
-
作業ツリー上のファイルをインデックスから復元する場合は、マージされていないパスで競合するマージを再作成してください。
-
--conflict=<style>
-
上記の
--merge
オプションと同じですが、競合するハンクの表示方法を変更し、merge.conflictStyle
構成変数をオーバーライドします。 可能な値は、merge
(デフォルト) とdiff3
とzdiff3
です。 -
--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>
-
別のコミットからファイルを取り出します
-
インデックスから 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