セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
ガイド
- gitattributes
- コマンドラインインターフェースの慣習
- 日常のGit
- よくある質問 (FAQ)
- 用語集
- フック
- gitignore
- gitmodules
- リビジョン
- サブモジュール
- チュートリアル
- ワークフロー
- すべてのガイド...
管理
プランビングコマンド
-
2.49.0
2025-03-14
- 2.43.1 → 2.48.1 変更なし
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 変更なし
-
2.35.0
2022-01-24
- 2.30.1 → 2.34.8 変更なし
-
2.30.0
2020-12-27
- 2.27.1 → 2.29.3 変更なし
-
2.27.0
2020-06-01
- 2.25.1 → 2.26.3 変更なし
-
2.25.0
2020-01-13
- 2.23.1 → 2.24.4 変更なし
-
2.23.0
2019-08-16
概要
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>…]
説明
ワークツリーの指定されたパスを、復元元からの内容で復元します。パスが追跡されているにもかかわらず復元元に存在しない場合、そのパスは復元元と一致するように削除されます。
このコマンドは、--staged
を指定してインデックス内の内容を復元するため、または --staged --worktree
を指定してワークツリーとインデックスの両方を復元するために使用することもできます。
デフォルトでは、--staged
が指定されている場合、内容は HEAD
から復元され、そうでない場合はインデックスから復元されます。別のコミットから復元するには --source
を使用します。
これら3つのコマンドの違いについては、git[1] の「Reset, restore and revert」を参照してください。
このコマンドは実験的です。動作が変更される可能性があります。
オプション
-
-s <tree>
-
--source=<tree>
-
ワークツリーのファイルを指定されたツリーの内容で復元します。ソースツリーは、それに関連付けられたコミット、ブランチ、またはタグの名前を指定するのが一般的です。
指定されない場合、
--staged
が与えられれば内容はHEAD
から復元され、そうでなければインデックスから復元されます。特別なケースとして、マージベースが正確に1つだけの場合、<rev-A> と <rev-B> のマージベースのショートカットとして
"<rev-A>...<rev-B>"
を使用できます。<rev-A>_ または <rev-B> のうち、多くても1つを省略することができ、その場合はデフォルトでHEAD
になります。 -
-p
-
--patch
-
復元元と復元場所の差分からインタラクティブにハンクを選択します。
--patch
モードの操作方法については、git-add[1] の「Interactive Mode」セクションを参照してください。--patch
はパススペックを受け入れず、すべての変更されたパスを復元するようにプロンプト表示されることに注意してください。 -
-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
オプションと同じですが、競合するハンクの表示方法を変更し、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>
の <tree> に存在しない追跡対象ファイルは削除され、<tree> と完全に一致するようになります。デフォルトはノーオーバーレイモードです。 -
--pathspec-from-file=<file>
-
パススペックはコマンドライン引数ではなく <file> で渡されます。<file> が正確に
-
の場合、標準入力が使用されます。パススペック要素は LF または CR/LF で区切られます。パススペック要素は、設定変数core.quotePath
(詳細については git-config[1] を参照) で説明されているようにクォートすることができます。--pathspec-file-nul
とグローバルの--literal-pathspecs
も参照してください。 -
--pathspec-file-nul
-
--pathspec-from-file
と一緒にのみ意味があります。パススペック要素は NUL 文字で区切られ、その他のすべての文字は (改行と引用符を含め) リテラルに解釈されます。 -
--
-
これ以上の引数をオプションとして解釈しないでください。
-
<pathspec>...
-
操作によって影響を受けるパスを制限します。
詳細については、gitglossary[7] の pathspec エントリを参照してください。
例
次のシーケンスは、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 パススペックマジックを使用してすべてのワークツリーファイルを復元するには (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] スイートの一部