🐤

Main Branchに直接Commit してしまった時のRecover方法

2024/10/21に公開

Main Branchに直接Commit してしまった時のRecover方法

初めまして、プログラミング初心者のRisaと申します。本記事は自身の備忘録としてまとめたものです。「うっかりmain Branchに直接commitしてしまった!」そんな焦る瞬間、ありませんか?この記事では、そんな時に使えるrecover方法を初心者目線で解説しています。同じような状況でお困りの方の参考になれば幸いです。

Step 1: 現在の状況を確認する

Terminalで以下のcommandを実行して、直近のcommit履歴を確認しましょう。

git log --oneline

Step 2: 新しいBranchを作成する

HEADの状態を保持したまま、間違えて行ってしまった変更を別のbranchに移動させます。

git checkout -b feature-branch

このcommandで「feature-branch」という新しいbranchが作成され、main branchで行ったcommitがそのまま移行されます。
-boption:このoptionを使うと、新しいbranchを作成して、同時にそのbranchに切り替えます。もし -bを付けなければ、すでに存在するbranchにしか切り替えられません。

Step 3: Main Branchをresetする

main branchに誤ってcommitした状態を元に戻します。
注意: リモートにプッシュしていない場合のため以下の --hard オプションを使います。

git checkout main
git reset --hard origin/main

これで、main branchはリモートの状態に戻り、誤って追加したcommitが削除されます。
今までの作業や未commitの変更は、すべて消えてしまいます。消したくない変更がある場合は、事前にバックアップを取るか、--soft もしくは --mixed などのoptionを使うのが安全です。

Step 4: 新しいbranchに切り替え作業する

新しく作成した「feature-branch」に切り替えて作業を続けましょう。

git checkout feature-branch

必要に応じて変更を加えたら、このbranchからpull request(PR)を作成するか、remote repositoryにpushしてチームに共有できます。

git push origin feature-branch

既にpushしてしまった場合の対処😨

もし間違えてcommitした内容をすでにremote repositoryにpushしてしまった場合、以下の手順で対処します。

git checkout main
git reset --hard origin/main
git push --force

注意: 強制pushは他の開発者の作業を壊してしまう可能性があるため、慎重に行ってください。
間違いが少なければgit revertcommandでcommitを取り消す方法も検討しましょう。これは、リモートの履歴に変更履歴を残したまま修正する方法です。

まとめ

以上の行程を踏めばbranchを作り忘れてmainにcommitしてしまったミスを修正することができます。しかしpush後の修正には十分注意が必要ですので気をつけてください。

▶️ポイント
・必ず作業前に新しいbranchを作成する癖付けをしましょう。
・commitやpushを実行する前に git statusで確認することも有効かもしれません。

参考
https://docs.github.com/ja
https://dev.classmethod.jp/articles/git-move-change-to-another-branch/

Discussion