Web開発者またはソフトウェアエンジニアの場合、Gitに多くのコミットをプッシュしている可能性が非常に高いです。毎日リポジトリ。
ただし、Gitリポジトリにプッシュしてはならないファイルをコミットした場合もあります。
コミットを発行する前に、追加の変更を実行したい場合があります。 。
結果として、Gitリポジトリから最後のコミットを元に戻す必要があります。
このチュートリアルでは、最後のコミットを簡単に元に戻す方法を見ていきます。後で変更を再コミットします。
目次
リセットして最後のGitコミットを元に戻す
最後のGitコミットを元に戻す最も簡単な方法は、ファイルに加えられた変更を保持する「–soft」オプションを指定して「gitreset」コマンドを実行することです。元に戻すコミットを指定する必要があります。この場合は「HEAD〜1」です。
最後のコミットはGit履歴から削除されます。
この表記に慣れていない場合、「HEAD〜1」は、ログ履歴でHEAD(最後のコミット)を前の1つのコミットにリセットすることを意味します。
では、このコマンドの影響は何ですか?
「gitreset」コマンドは、「git add」コマンドの反対であり、基本的にファイルを追加します。
「– soft」オプションを指定すると、Gitは、作業ディレクトリまたはインデックス内のファイルをまったく変更しないように指示されます。
例として、最近のコミットで2つのファイルを追加したが、このファイルにいくつかの変更を加えたいとします。
その結果、「– soft」オプションとともに「gitreset」を使用します。最後のコミットを元に戻し、追加の変更を実行するため。
ご覧のとおり、最後のコミットを元に戻すと、ファイルはまだインデックスにありますが(コミットされる変更)、コミットは削除されました。
素晴らしい、リポジトリの最後のGitコミットを正常に元に戻しました。
Gitコミットをハードリセットします。
前のセクションでは、インデックス内のファイルに加えられた変更を保持することで、最後のコミットを簡単に元に戻す方法を説明しました。
場合によっては、単にコミットとファイルに加えられた変更を取り除きます。
これが「–hard」オプションの目的です。
最後のコミットを元に戻し、すべての変更を破棄するため作業ディレクトリとインデックスで、「– hard」オプションを指定して「gitreset」コマンドを実行し、HEADの前にコミットを指定します(「HEAD〜1」)。
「– hard」を使用する場合は注意してください。変更は作業ディレクトリとインデックスから削除され、すべての変更が失われます。
前に詳しく説明した例に戻りましょう。 「file1」という名前の新しいファイルをGitリポジトリにコミットしたこと。
ここで、最後のコミットを元に戻し、すべての変更を破棄するふりをしましょう。
では、Gitリポジトリの状態を見てみましょう。 。
ご覧のとおり、ファイルはGitリポジトリ(インデックス+作業ディレクトリ)から完全に削除されました
混合リセットGit commit
最後のGitコミットを元に戻すには、変更を作業ディレクトリに保持しますが、インデックスには保持しません。「-mixed」オプションを指定して「gitreset」コマンドを使用する必要があります。このコマンドの横に、最後のコミットに「HEAD〜1」を追加するだけです。
例として、「」という名前のファイルを追加したとします。元に戻す必要のあるコミット内のfile1」。
最後のコミットを元に戻すには、「– mixed」オプションを指定して「gitreset」コマンドを実行するだけです。
「-mixed」オプションを指定すると、ファイルはGitインデックスから削除されますが、作業ディレクトリからは削除されません。
結果として、「-mixed」 」はソフトリセットとハードリセットの「混合」であるため、その名前が付けられています。
すばらしい!ファイルに加えられた変更を保持しながら、最後のコミットを元に戻す別の方法を見つけました。
次のセクションでは、gitrevertコマンドを使用して最後のコミットを元に戻す別の方法を説明します。
最後のコミットを元に戻す
最後のGitコミットを元に戻すには、「git revert」を使用して、元に戻すコミットを指定します。これは、履歴の最後のコミットの「HEAD」です。
「gitrevert」コマンドは、「git reset」コマンドとは少し異なります。これは、最後のコミットを元に戻すことによって導入された変更を含む新しいコミットを記録するためです。
「gitリセット」を指定したのは、リセットコマンドが新しいHEAD位置を設定し、元に戻すと指定したコミットが実際に元に戻るためです。
結果として、ファイルを変更するには、変更を再度コミットする必要があります。元に戻され、コミットが取り消されます。
結果として、Gitリポジトリに新しいファイルをコミットしたが、このコミットを元に戻したいとします。
「gitrevert」コマンドを実行すると、Gitは変更をコミットするためにテキストエディターを自動的に開きます。
コミットメッセージが完了すると、新しいコミットハッシュを含むメッセージが表示されます。
Git履歴をもう一度調べると、リポジトリから最後のコミットを元に戻すために新しいコミットが追加されていることがわかります。
結論
このチュートリアルでは、Gitリポジトリの最後のコミットを元に戻すすべての方法を見てきました。
「gitreset」について学習しました。 」コマンドと、保持するかどうかに応じて実行するさまざまな方法。
また、gitresetコマンドとgitrevertコマンドの違いについても学びました。後者は、新しいコミットを順番に追加します。リポジトリから1つを元に戻します。
Gitまたはソフトウェアエンジンについて知りたい場合ウェブサイトにはそれ専用の完全なセクションがありますので、ぜひチェックしてください!
Gitが好きなら、他の記事も好きかもしれません:
- Gitリポジトリのクローンを作成する方法
- Gitファイルのステージングを解除する方法
- Gitコミットをチェリーピックする方法