設定と構成
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ
デバッグ
メール
外部システム
サーバー管理
- 2.43.1 → 2.47.0 変更なし
-
2.43.0
11/20/23
- 2.35.1 → 2.42.3 変更なし
-
2.35.0
01/24/22
- 2.30.1 → 2.34.8 変更なし
-
2.30.0
12/27/20
- 2.27.1 → 2.29.3 変更なし
-
2.27.0
06/01/20
- 2.25.1 → 2.26.3 変更なし
-
2.25.0
01/13/20
- 2.23.1 → 2.24.4 変更なし
-
2.23.0
08/16/19
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] の「リセット、復元、および元に戻す」を参照してください。
このコマンドは実験的なものです。動作が変更される可能性があります。
OPTIONS
- -s <tree>
- --source=<tree>
-
指定されたツリーの内容を使用して、作業ツリーのファイルを復元します。ソースツリーは、それに関連付けられたコミット、ブランチ、またはタグを指定するのが一般的です。
指定しない場合、
--staged
が指定されている場合はHEAD
から、そうでない場合はインデックスから内容が復元されます。特別なケースとして、マージベースが1つしかない場合、
"A...B"
をA
とB
のマージベースのショートカットとして使用できます。A
とB
のうち最大1つを省略することができ、その場合はデフォルトでHEAD
になります。 - -p
- --patch
-
復元元と復元先の差分から対話的に hunk を選択します。
--patch
モードの操作方法については、git-add[1] の「対話モード」セクションを参照してください。--patch
は pathspec を受け付けず、変更されたすべてのパスを復元するかどうかを尋ねることに注意してください。 - -W
- --worktree
- -S
- --staged
-
復元場所を指定します。どちらのオプションも指定しない場合、デフォルトでは作業ツリーが復元されます。
--staged
を指定すると、インデックスのみが復元されます。両方を指定すると、両方が復元されます。 - -q
- --quiet
-
静かで、フィードバックメッセージを抑制します。
--no-progress
を暗黙的に意味します。 - --progress
- --no-progress
-
--quiet
が指定されていない限り、ターミナルに接続されている場合は、デフォルトで標準エラーストリームに進行状況が表示されます。このフラグは、ターミナルに接続されていない場合でも、--quiet
に関係なく進行状況の表示を有効にします。 - --ours
- --theirs
-
インデックスから作業ツリー内のファイルを復元する場合、マージされていないパスにはステージ#2(ours)または#3(theirs)を使用します。このオプションは、ツリー状のものからパスをチェックアウトする場合は使用できません(つまり、
--source
オプションを使用する場合)。git rebase
およびgit pull --rebase
中に、ours と theirs が入れ替わって表示される場合があることに注意してください。詳細については、git-checkout[1] の同じオプションの説明を参照してください。 - -m
- --merge
-
インデックスから作業ツリー内のファイルを復元する場合、マージされていないパスで競合するマージを再作成します。このオプションは、ツリー状のものからパスをチェックアウトする場合は使用できません(つまり、
--source
オプションを使用する場合)。 - --conflict=<style>
-
上記の
--merge
オプションと同じですが、競合する hunk の表示方法を変更し、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
が分離されます。 - --overlay
- --no-overlay
-
オーバーレイモードでは、復元時にファイルが削除されることはありません。非オーバーレイモードでは、
--source
ツリーにない追跡対象ファイルが削除され、<tree>
と完全に一致するようにします。デフォルトは非オーバーレイモードです。 - --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
GIT
git[1] スイートの一部