Git コミットを元に戻し、それが原因で誤ってファイルまたはコードを削除してしまった場合でも、心配する必要はありません。 Git はすべてを追跡し、元に戻したファイルの回復はコマンド ラインとほとんどの GUI Git クライアントの両方から簡単に実行できます。
慌てないで
幸いなことに、Git は元に戻されたコミットも含め、すべてを追跡します。まだ何も削除していません。
Git コミットを「削除」しようとしたときに、この問題に遭遇した可能性があります。ただし、一度作成したコミットを実際に削除することはできません。以前のコミットにリセットしてローカルの変更を無視するか、変更を元に戻すことのみが可能です。
たとえば、この問題を抱えた私の場合、Git リポジトリを初期化したばかりで、誤ってすべてをステージングし、
.gitignore
コミットしたファイル
./bin/
フォルダーやその他の不要なもの。そこで、何も考えずに Git クライアントで「元に戻す」をクリックし、ディレクトリ全体が削除されるのを恐怖のあまり見守りました。おっと。
問題は、コミットを「元に戻す」ことは、変更をステージング解除することと同じではなく、ローカル ファイルに予期せぬ影響を与える可能性があり、Git を介してのみ修正できることです。これは、すべてのデータが依然として
.git/
リポジトリのフォルダーに保存されるため、復元できるようになります。
奇妙な名前が付いているのは仕方がありません。不要なコミットを削除する実際の方法は、HEAD の後ろにある最後のコミットに「ソフト リセット」を実行することです。したがって、次回、コミットを元に戻す (変更を編集して再コミットする) 場合は、次のコマンドを使用します。
git リセット HEAD~1
明確にしておきます — これは、ローカルの変更もすべて削除する「ハード」リセットではありません。
取り消されたコミットの修正
修正は非常に簡単です。 「git revert」を実行するたびに、Git は元に戻されるコミットとは逆の変更を加えた新しいコミットを作成します。ファイルを作成した場合、そのファイルは削除され、コミットにそれが反映されます。
修正するには、元に戻すコミットを適用してから元に戻し、変更を元に戻します。これは、復帰コミットがリポジトリの HEAD にない場合でも機能します。それ以外の場合は、ハード リセットを実行することも機能し、同僚に笑われるような恥ずかしい「元に戻す」および「元に戻す」コミットからリポジトリを解放できます。
コミットのハッシュを見つけるには、
git log
を実行します。
このハッシュをコピーし、
git revert
を実行します。
git を元に戻す 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f
これによりリポジトリは修正されますが、自動コミットが失敗した場合は、手動で元に戻すことをコミットする必要がある場合があります。
ほとんどの GUI Git クライアントでは、プロセスは非常に簡単です。コミットの「元に戻す」をクリックするだけです。
痕跡を残さずに元に戻す
コミット ツリーの HEAD にいて、新しいコミットを作成せずにこれを実行したいが、変更をまだプッシュしていない場合は、ローカル ブランチを古いコミットにハード リセットできます。
git restart --hard HEAD^
これをハード リセットにする必要がある理由は、ソフト リセットには、元に戻したときのステージングされていない変更が依然として含まれるためです。ローカルの変更を加えずにリセットしたいと考えています。
手動でソフト リセットしてローカルの変更を破棄することもできます。





