最後の Git コミットを元に戻す方法

最後の Git コミットを元に戻すことは、変更を元に戻したり間違いを修正したりする必要がある開発者にとって一般的なタスクです。Git には最新のコミットを元に戻す方法がいくつか用意されており、これによりプロジェクト履歴をクリーンかつ正確に維持できます。これらの方法には、コミットのリセット、元に戻す、または修正が含まれます。各方法は、変更を保存するか破棄するかに応じて目的が異なります。

このガイドでは、実際の例を使用して、最後の Git コミットを元に戻す方法を説明します。これらのテクニックを習得することで、Git 履歴を効率的に管理し、プロジェクトが適切に整理され、エラーのない状態を維持できるようになります。

Gitコミットを理解する

Git コミットを元に戻す方法を説明する前に、Git におけるコミットの意味を理解することが重要です。コミットは、特定の瞬間の作業のスナップショットを表します。コミットには、最後のコミット以降に行ったすべての変更が含まれます。各コミットは SHA-1 ハッシュによって一意に識別され、Git が変更履歴を維持できるようにします。

Git コミットを元に戻す

Git コミットを元に戻すには、git reset と git revert という 2 つの主な手法があります。それぞれの方法について、使用例や影響を含めて詳しく説明します。

git reset --soft HEAD~1

git reset の使用

git reset コマンドは、現在の HEAD を指定した状態に移動または「リセット」できる強力なツールです。最後のコミットを元に戻すには、次のように使用します。

git reset --soft HEAD~1

このコマンドでは、–soft により変更がステージング領域に保存され、HEAD~1 は現在のコミットの前のコミットを参照します。取り消されたコミットによる変更は、作業ディレクトリとステージング領域に残ります。

出力例を次に示します。

Unstaged changes after reset:
M    file1.txt
M    file2.txt

これは、file1.txt と file2.txt の変更がステージングされていないことを示します。

コミットとそれに関連するすべての変更を完全に破棄したい場合は、–hard オプションを使用できます。

git reset --hard HEAD~1

このコマンドは最後のコミットからのすべての変更を永久に破棄するため、注意してください。

git revert の利用

git revert コマンドは、以前のコミットで行われた変更を元に戻す新しいコミットを作成します。これは、既存のコミット履歴を変更しないため、変更を元に戻す安全な方法です。使用方法は次のとおりです。

git revert HEAD

このコマンドは、最後のコミットで行われた変更を元に戻す新しいコミットを作成します。

出力例を次に示します。

[master 0a9b2aa] Revert "Add new feature"
 1 file changed, 1 insertion(+), 2 deletions(-)

これは、以前のコミットからの変更を元に戻す新しいコミットが作成されたことを示します。

Git コミットを元に戻す: 拡張例

git reset の使用: その他の例

特定のコミットにリセットする

最後のコミットだけでなく複数のコミットを取り消したい場合は、代わりにコミットハッシュを指定することで取り消すことができます。 HEAD~1。 例えば:

git reset --soft 9fceb02

このコマンドは、HEAD をハッシュ 9fceb02 で指定されたコミットに移動し、9fceb02 以降のすべてのコミットからの変更はステージング領域に保持されます。

ステージングされていない変更をリセットする

変更を加えたがまだコミットしておらず、これらの変更を元に戻したい場合は、コミット参照なしで git reset を使用できます。

git reset --hard

このコマンドは、ステージングされていないすべての変更を元に戻し、作業ディレクトリを最後のコミットの状態に戻します。

git revert の使用: その他の例

コミットの範囲を元に戻す

コミットの範囲を元に戻す場合は、git revert コマンドを使用して範囲を指定できます。例:

git revert HEAD~3..HEAD

このコマンドは、過去 3 つのコミットで行われた変更を元に戻す新しいコミットを作成します。

特定のコミットを元に戻す

最新ではない特定のコミットを元に戻したい場合は、コミット ハッシュを指定して元に戻すことができます。

git revert 9fceb02

このコマンドは、ハッシュで指定されたコミットで行われた変更を元に戻す新しいコミットを作成します。 9fceb02.

結論

Git は強力なツールですが、その複雑さは初心者にとっては気が遠くなるようなものかもしれません。しかし、コミットを元に戻す方法を明確に理解すれば、自信を持って Git を操作できます。git reset と git revert のどちらを使用するかは、特定のニーズと各コマンドの影響によって異なります。Git をマスターするための鍵は、練習と探求であることを忘れないでください。

Joshua James
カテゴリー Git

コメントを残す