Git でコミットする前に削除されたファイルを復元する
-
Git で
resetおよびcheckoutコマンドを使用してコミット前に削除されたファイルを復元する -
Git で
git checkoutコマンドを使用してコミット前に削除されたファイルを復元する - Git でコミットする前に、削除されたファイルのバッチを復元する
git checkout および git reset コマンドを使用して、コミットする前に削除されたファイルを復元します。 Git は、これらのコマンドで複雑なタスクを実行するための強力なオプションを提供します。
最初に削除されたファイルのステージングを解除してから、別の手順で作業ツリーに復元することができます。 または、2つの操作を 1つのステップに結合することもできます。
このチュートリアルでは、1つのコマンドで複数のファイルの削除を取り消す巧妙なトリックを紹介します。
Git で reset および checkout コマンドを使用してコミット前に削除されたファイルを復元する
まず、リポジトリをセットアップして、いくつかのファイルを追加しましょう。 次のようになります。

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

rm コマンドでファイルを削除します。
git rm file7.txt
削除されたファイル file7.txt は、リポジトリに存在しなくなりました。

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

コミットする前に、削除されたファイルの復元に進みます。
まず、reset コマンドで削除をアンステージします。
git reset <commit_hash> [--] <path_to_file>
このコマンドは、path_to_file パラメータに一致するすべてのファイルのインデックスを commit_hash の状態に復元します。
git reset HEAD --file7.txt
これにより、インデックスが file7.txt の HEAD に復元されます。 HEAD は最後のコミットを指します。
削除をコミットしていないため、最後のコミットには削除エントリがないことに注意してください。
基本的に、このコマンドを使用して、削除されたファイルのステージングを解除します。


次に、git checkout コマンドを使用して、作業領域に削除されたファイルを復元します。
git checkout [--] <path_to_file>
checkout は、作業ツリーのコンテンツをこの形式のインデックスで上書きします。
git checkout -- file7.txt

Git で git checkout コマンドを使用してコミット前に削除されたファイルを復元する
git checkout コマンドは、上記の 2つのステップを 1つに結合できるフォームを提供します。
git checkout <commit> [--] <path_to_file>
この形式では、git checkout はインデックス領域と作業領域の両方のコンテンツを commit で上書きします。
git checkout HEAD -- file7.txt
HEAD は最後のコミットを指します。 削除をコミットしていないため、最後のコミットは削除操作を認識していません。

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

上記のコマンドを 1000 回入力することは、プログラマーのやり方ではありません。 代わりに、パス指定子でワイルドカードを使用して、多くのファイルを一致させ、単一のコマンドでそれらを元に戻すことができます。
git reset HEAD .
これは、file7.txt を . に置き換えたことを除いて、上記と同じコマンドです。 ワイルドカード。 . すべてのファイルに一致するように git に指示します。
したがって、このコマンドは、削除されたすべてのファイルのステージングを解除します。 次に、作業領域でそれらを復元します。
git checkout .
file7.txt を使用した同じコマンドは、再び . に置き換えられます。 ワイルドカード。 ステージングされていないすべての削除を一度に復元します。

