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