• Home
  • 【初心者必見】Gitのrevertコマンドガイド

【初心者必見】Gitのrevertコマンドガイド

記事のサムネイル

既存のコミットを取り消すためのコマンドです。この記事では、revert コマンドの詳細な使い方を探求し、この便利な機能を使用してプロジェクトの履歴を管理する方法について説明します。また、他のコマンドとの比較も行います。

revert コマンドとは

revert コマンドは、Git の既存のコミットを取り消すためのコマンドです。このコマンドは、コミットを取り消す新しいコミットを作成することによって、既存のコミットを取り消します。一般的に、「取り消したいコミットを打ち消すようなコミットを新しく作成する」という処理を行います。このため、既存のコミットの履歴は変更されません(コミットログには残ります)。この特性により、リモートリポジトリにプッシュされて公開されているコミットに対しても、安全に revert コマンドを使用できます。

revert コマンドの「既存のコミットを元に戻す」という点に関連して、同様の機能を持つ reset コマンドも存在します。しかし、reset コマンドは「コミットを取り消した」というコミットを作成せず、コミットを元に戻します。特にリモートにプッシュされ、公開されているコミットに対して reset コマンドを使用することは避けるべきです。注意が必要です。

また、revert コマンドは特定のコミットを元に戻すためのコマンドです。指定したコミット以降に行われた変更をすべて元に戻すわけではありません。

revert コマンドの基本的な使い方

特定のコミットを取り消すには、以下のコマンドを使用します。

$ git revert <commit>

上記のコマンドは、指定したコミットを取り消す新しいコミットを作成し、コードをそのコミットが存在しなかった状態に戻します。revert コマンドを実行すると、エディタが開き、コミットメッセージを編集できます。

コミットメッセージの編集

revert コマンドを使用する際に、コミットメッセージの編集を行うかどうかをオプションで指定できます。

コミットメッセージを編集する(オプションなし)

$ git revert <commit> -e

または

$ git revert <commit> --edit

コミットメッセージを編集しない(エディタを開かない)

$ git revert <commit> --no-edit

コミットしない

revert コマンドを使用すると、通常は新しいコミットまで行われますが、インデックスに戻すだけでコミットを行わないようにすることもできます。特に複数のコミットを revert する際に便利です。

$ git revert <commit> -n

または

$ git revert <commit> --no-commit

マージコミット

マージコミットを取り消す場合、マージした 2 つのコミット(親)のうち、どちらに戻すかを指定する必要があります。この際には-m オプションを使用し、戻したい親を数字(通常は 1 または 2)で指定します。以下はその例です。

$ git revert -m 1 <commit>

対象のマージコミットを確認するには、git showコマンドやgit logコマンドを使用し、親の数字(通常は 1 または 2)を確認します。これにより、どちらの親に戻すかを指定できます。

$ git show
commit xyz
Merge: 1a1a1a 2b2b2b # 注目
Author: xxxx xxxx
Date: Thu Jul 13 09:00:00 2017 +0000

    Merge commit

上記の例では、「xyz」がマージコミットであり、「1a1a1a」と「2b2b2b」がマージされたコミットです。番号は、ログの「Merge:」行に書かれている順序に基づいて 1 または 2 が割り当てられます。

これで、Git の revert コマンドの詳細についての理解が深まったことでしょう。プロジェクトの履歴を管理する際に、revert コマンドを活用して変更を安全に取り消すことができます。

実装やエラーが解決できない場合

プログラミングの実装やエラーでどうしてもわからない場合はメンターに相談するのが一番です。

考えている、見えている範囲が狭くなり、解決から遠くに行って何時間も、何日も経っていることなんてよくある話です。

そういう時は聞ける先輩や、メンターに相談することが大事です。

僕にも相談可能なので気軽に相談してください。

ご相談はこちら
(Twitterのプロフィールへ飛びます)

OTHER ARTICLES

  • Web制作

  • Rails

railsでjsではなくrubyでtooltipの単位を設定するときの話

2024/08/20
  • Web制作

  • Rails

Railsにおけるクラスメソッドとインスタンスメソッドの違いについて

2024/05/30
  • Web制作

  • Docker

  • Rails

DockerでRails7 + PostgreSQL + esbuildの環境を構築する方法

2024/05/16
  • Web制作

  • Rails

  • Docker

Dockerで建てたrails7環境で「undefined method `devise' for 〜」が発生した話

2024/05/16
  • Web制作

  • Rails

Ruby on RailsのルーティングとRESTfulルート

2024/05/09
  • Web制作

  • Rails

Ruby on Railsにおけるresourceとresourcesの違い

2024/05/01
管理者のイメージ画像

PROFILE

Youta

山口県出身の現役のWebエンジニアです。仕事を通して学んだことや、生活していく中で学んだことを発信していきます。

CATEGORY