Git でコミットする前に削除されたファイルを復元する

Ankit Raj Goyal 2024年2月15日
  1. Git で reset および checkout コマンドを使用してコミット前に削除されたファイルを復元する
  2. Git で git checkout コマンドを使用してコミット前に削除されたファイルを復元する
  3. Git でコミットする前に、削除されたファイルのバッチを復元する
Git でコミットする前に削除されたファイルを復元する

git checkout および git reset コマンドを使用して、コミットする前に削除されたファイルを復元します。 Git は、これらのコマンドで複雑なタスクを実行するための強力なオプションを提供します。

最初に削除されたファイルのステージングを解除してから、別の手順で作業ツリーに復元することができます。 または、2つの操作を 1つのステップに結合することもできます。

このチュートリアルでは、1つのコマンドで複数のファイルの削除を取り消す巧妙なトリックを紹介します。

Git で reset および checkout コマンドを使用してコミット前に削除されたファイルを復元する

まず、リポジトリをセットアップして、いくつかのファイルを追加しましょう。 次のようになります。

削除前の初期レポ

最初の 2つのコミットは、ログで次のようになります。

初期リポジトリ コミット

rm コマンドでファイルを削除します。

git rm file7.txt

削除されたファイル file7.txt は、リポジトリに存在しなくなりました。

ファイルを削除

rm のデフォルトの動作は、削除の変更を自動的にステージングすることです。

rm 自動ステージ削除

コミットする前に、削除されたファイルの復元に進みます。

まず、reset コマンドで削除をアンステージします。

git reset <commit_hash> [--] <path_to_file>

このコマンドは、path_to_file パラメータに一致するすべてのファイルのインデックスを commit_hash の状態に復元します。

git reset HEAD --file7.txt

これにより、インデックスが file7.txtHEAD に復元されます。 HEAD は最後のコミットを指します。

削除をコミットしていないため、最後のコミットには削除エントリがないことに注意してください。

基本的に、このコマンドを使用して、削除されたファイルのステージングを解除します。

Git Reset Unstage Change

削除済みファイルのアンステージ

次に、git checkout コマンドを使用して、作業領域に削除されたファイルを復元します。

git checkout [--] <path_to_file>

checkout は、作業ツリーのコンテンツをこの形式のインデックスで上書きします。

git checkout -- file7.txt

Git 削除済みファイルの復元 2 ステップ

Git で git checkout コマンドを使用してコミット前に削除されたファイルを復元する

git checkout コマンドは、上記の 2つのステップを 1つに結合できるフォームを提供します。

git checkout <commit> [--] <path_to_file>

この形式では、git checkout はインデックス領域と作業領域の両方のコンテンツを commit で上書きします。

git checkout HEAD -- file7.txt

HEAD は最後のコミットを指します。 削除をコミットしていないため、最後のコミットは削除操作を認識していません。

Git Undelete Single Step Checkout

Git でコミットする前に、削除されたファイルのバッチを復元する

大量のファイルを削除してコミットしなかった場合はどうなるでしょうか? 1000 個のファイルを削除し、それらすべてを復元したいとします。

複数のファイルを削除

上記のコマンドを 1000 回入力することは、プログラマーのやり方ではありません。 代わりに、パス指定子でワイルドカードを使用して、多くのファイルを一致させ、単一のコマンドでそれらを元に戻すことができます。

git reset HEAD .

これは、file7.txt. に置き換えたことを除いて、上記と同じコマンドです。 ワイルドカード。 . すべてのファイルに一致するように git に指示します。

したがって、このコマンドは、削除されたすべてのファイルのステージングを解除します。 次に、作業領域でそれらを復元します。

git checkout .

file7.txt を使用した同じコマンドは、再び . に置き換えられます。 ワイルドカード。 ステージングされていないすべての削除を一度に復元します。

削除の一括復元

すべての削除されたファイルが復元されました

関連記事 - Git Restore