Git でのコミットの取り消し

Abdul Jabbar 2023年1月30日
  1. Git でコミットを元に戻す-ハードリセット
  2. Git でコミットを元に戻す-Git をリセット
  3. Git でコミットを元に戻す-Git をソフトリセット
  4. Git でコミットを元に戻す-ハードリセットファイルを復元する
Git でのコミットの取り消し

この記事では、Git コミットを使用しているときに、それを実行するつもりがないことを回復する方法について説明します。Git は、特定の問題に取り組むために大規模なプロセスが必要になるほど複雑ではありませんが、発生する問題が非常に大きいため、問題の内容と結果に応じてさまざまな手法が必要になります。

Git には理解しやすい側面がたくさんありますが、以前の場所に戻るのははるかに簡単で評価できます。リポジトリ内の主要な変更を元に戻す方が簡単です。コマンドを使ってどのように実行されるかわからないのは少し怖い瞬間です。しかし実際には、コミットやコミットの取り消しなどの小さなことを行うのは驚くほど簡単です。

しかし、この場合、不要なコミットを元に戻し、次に新しい変更をコミットするために何をしますか。

いくつかの変更を加えてから変更をコミットした場合、その目的のために、これを行うには 4つの方法があるとしましょう。

Git でコミットを元に戻す-ハードリセット

これがある場合、40 は HEAD、(42)はファイルの状態です。

   (42)
38-39-40
  Head

そして、あなたはコミットを取り消す 40 を望み、それを二度と見たくなくて、ローカルで変更されたファイルのすべての変更を消去したいと思います。

次のコマンドを使用します。

git reset --hard HEAD ~ 1

出力:

 (42)
38-39
 Head

現在、39 は HEAD です。上記の例では --hard を使用したため、ファイルはコミットヘッドで 39 番目のコミットの状態にリセットされます。

Git でコミットを元に戻す-Git をリセット

最後のコミット 40 は大したことではなく、少しずれているとしましょう。ここで、コミットを元に戻す必要がありますが、変更は保持します。ここからもう一度始めます。HEAD として 40 を使用します。

   (42)
38-39-40
  Head

--hard パラメータを使用する代わりに、次のコマンドを使用します。

git reset HEAD ~ 1

出力:

   (42)
38-39-40
Head

どちらの場合も見てきたように、HEAD は最新のコミットを定義するだけです。git reset HEAD~1 を実行すると、コマンド Git は HEAD ポインターを 1つのコミットに戻します。ただし、(--hard を使用しない限り)ファイルは以前のままにしておきます。何も失っていません。

Git でコミットを元に戻す-Git をソフトリセット

簡単に言うと、コミットを元に戻すこともできますが、次を使用してファイルとインデックスを残すことができます。

git reset --soft HEAD ~ 1

これはファイルをそこに残すだけではありません。インデックスをそのままにしておきます。git status を実行すると、以前と同じファイルがインデックスに含まれていることがわかります。実際、このコマンドの後で、git commit を実行でき、以前のコミットを再度実行できることがわかります。

Git でコミットを元に戻す-ハードリセットファイルを復元する

最初のオプションの例のようにコミットを元に戻したが、後でそれが必要であることに気付いたとします。さて、何をしますか?

心配しないでください、そしてそれを取り戻す方法はまだあります。コマンド git reflog を使用して、移動した(未完了の)コミットのリストを確認します。破棄したコミットを見つけて、次のようにします。

git checkout -b BranchName CommitYouDestroyed

これで、そのコミットが復元されました。Git では、コミットは削除された日から 90 日間は削除されないため、バックアップとしてリポジトリに簡単に復元できます。

著者: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

関連記事 - Git Undo