Gitの「revert」を使いこなす! 間違った変更をなかったことにする方法を徹底解説

はじめに:過去のコミットをなかったことに?そんな夢を叶えるGit revert!

Gitで開発をしていると、過去のコミットをなかったことにしたい!と思う場面に遭遇するかもしれません。

例えば、

  • うっかり間違ったファイルをコミットしてしまった…
  • 後になって、あの機能追加はやっぱり不要になった…

なんていう経験、皆さんにもありませんか?

そんな時こそ、「Git revert」の出番です!

Git revertは、過去のコミットを取り消す強力な機能。しかし、使い方を間違えると、思わぬ混乱を招く可能性も秘めています。

そこで今回は、Git revertについて、基本的な使い方から注意点、さらには応用的な活用方法まで、具体的な例を交えながら分かりやすく解説していきます。

この記事を読めば、もうrevertで迷うことはありません! 安心してGitを使いこなせるようになりましょう。

1. Git revertとは? resetとの違いを理解しよう!

Git revertは、特定のコミットによる変更を取り消すための機能です。 ただし、単純に履歴からコミットを削除するのではなく、「打ち消すための新しいコミット」を作成します。

つまり、Gitの履歴はそのままに、特定のコミットの効果だけを無効化できるのです。

ここが、過去のコミットをなかったことにするresetコマンドとの大きな違いです。

コマンド 変更履歴 説明
revert 残る 特定のコミットによる変更を打ち消す新しいコミットを作成
reset 削除される 指定したコミットまで履歴を巻き戻す(状況によっては履歴から完全に削除)

resetコマンドは、履歴を改変するため、共同開発をしている場合には注意が必要です。 一方、revertは新しいコミットを作成するため、履歴を共有している他の開発者に影響を与えません。

2. revertの基本的な使い方:たった2ステップで過去のコミットをなかったことに!

revertの基本的な使い方は非常にシンプルです。

  1. 取り消したいコミットを特定する:コミット履歴を確認し、revertしたいコミットのハッシュ値をコピーします。

    git log
    
  2. revertコマンドを実行する:コピーしたハッシュ値を使って、以下のコマンドを実行します。

    git revert <コミットハッシュ値>
    

すると、エディタが起動し、revertコミットのメッセージを入力する画面が表示されます。 デフォルトでは、「Revert “元のコミットメッセージ”」という形式のメッセージが自動生成されるので、必要であれば編集しましょう。 入力が完了したら、ファイルを保存してエディタを閉じると、revertコミットが作成されます。

3. revertの注意点:コンフリクト発生!そんな時は落ち着いて対処しよう

revertは非常に便利な機能ですが、使い方によってはコンフリクトが発生する可能性があります。 コンフリクトとは、revertしようとするコミットの内容と、現在のブランチの内容に差異がある場合に発生する衝突のことです。

例えば、過去のコミットで「ファイルA」を削除し、その後、現在のブランチで「ファイルA」に新たな変更を加えたとします。 この場合、過去のコミットをrevertしようとすると、「ファイルA」が存在しないという状態と、変更が加えられた状態が衝突し、コンフリクトが発生します。

コンフリクトが発生した場合は、落ち着いて対処しましょう。

  1. コンフリクトが発生しているファイルを確認する
    git status
    
  2. コンフリクトの内容を確認し、どのように修正するか判断する
  3. ファイルを編集し、コンフリクトを解消する
  4. 変更をステージングする
    git add <ファイル名>
    
  5. コミットする
    git commit -m "コンフリクト解消"
    

コンフリクトの解消は一見難しそうに見えますが、落ち着いて手順を踏めば大丈夫です。

4. revertを使いこなす!応用的な活用方法をご紹介

revertは、過去のコミットを取り消すだけでなく、様々な場面で活用できます。

  • 特定のファイルやディレクトリだけをrevertする

    特定のファイルやディレクトリだけをrevertしたい場合は、-nオプションとパスを指定します。

    git revert <コミットハッシュ値> -n <ファイル名>
    
  • マージされたブランチをrevertする

    マージしたブランチ全体をrevertしたい場合は、マージコミットを指定してrevertします。

    git revert -m 1 <マージコミットハッシュ値>
    

    -m 1オプションは、マージコミットの親のうち、1番目の親を基準にrevertすることを意味します。

まとめ:revertをマスターして、Gitを使いこなそう!

今回は、Gitのrevertについて解説しました。

revertは、過去のコミットを取り消せる強力な機能ですが、使い方を間違えると予期せぬ問題を引き起こす可能性もあります。

今回の記事で紹介した基本的な使い方や注意点を踏まえ、revertを安全かつ効果的に活用し、快適なGitライフを送りましょう!

関連記事