解説
過去版から1ファイルだけ戻すには?git restoreを一時リポジトリで試そう
「前のコミットの、このファイルだけ戻したい」。Gitのrestoreは、どこから何を復元するかを指定するコマンドだよ。作業中の内容を上書きする操作なので、まずは一時フォルダーの練習用リポジトリで試そう。

「前のコミットの、このファイルだけ戻したい」。Gitのrestoreは、どこから何を復元するかを指定するコマンドだよ。作業中の内容を上書きする操作なので、まずは一時フォルダーの練習用リポジトリで試そう。
読む操作と、戻す操作を分ける
過去の内容を読むだけなら、先にgit showで確認できる。restoreは作業ファイルなどを書き換えるため、「見るためだけ」に実行しないでね。
次は、自分で作成した練習リポジトリのターミナルだけで行う例だよ。既存プロジェクトのフォルダーを使わず、空の作業用フォルダーを用意しよう。
git init
printf 'first\n' > memo.txt
git add memo.txt
git -c user.name=Practice -c user.email=practice@example.invalid commit -m first
printf 'second\n' > memo.txt
git add memo.txt
git -c user.name=Practice -c user.email=practice@example.invalid commit -m second
git show HEAD~1:memo.txt
最後にfirstが表示される。ここまでは、二つのコミットを自分で作り、過去の内容を確認したところだよ。
作業ファイルだけを過去版にする
git restore --source=HEAD~1 --worktree -- memo.txt
cat memo.txt
git diff -- memo.txt
--sourceは復元元、--worktreeは作業ファイルを対象にする指定。--の後ろはファイルのパスだよ。この例では作業ファイルがfirstへ戻り、直近コミットとの差が残る。新しいコミットを作ったり、ブランチを過去へ戻したりはしていない。
ステージした内容まで変えたい場合の--stagedは別の指定。今回の手順には含めていないので、作業ファイルとステージの違いはgit diffの解説と合わせて確認しよう。
練習を元へ戻す
この練習だけなら、次で作業ファイルを直近コミットのsecondへ戻せる。
git restore --source=HEAD --worktree -- memo.txt
cat memo.txt
git status --short
secondが表示され、ほかに変更がなければstatusは空になる。編集部では一時リポジトリで、この内容と差分を確認したよ。
実作業では、実行前にgit statusとgit diffで未保存の変更を確認する。restore自体を、未コミット内容のバックアップ代わりにしないでね。対象をまとめて指定する前に、一つのパスへ絞ると影響を把握しやすい。Git公式のrestore説明で復元先の組み合わせも確かめよう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。