🏰

ブランチを切り忘れてリモートにプッシュした時の対処法

2024/11/28に公開

はじめに

開発中によくある失敗。うっかりmainブランチで作業してしまい、そのままプッシュしてしまった場合の対処法を詳しく解説します。今回はgit revertを使用して安全に変更を元に戻す方法を紹介します。

シナリオ

あなたは新機能の開発に取り組んでいます。本来はdevelopブランチを切って作業するはずが、うっかりmainブランチで作業してしまい、変更をコミット&プッシュしてしまいました。

対処方法 Step by Step

1. 現在の状況を確認

まずは現在の状況を把握しましょう。

# 現在のブランチと状態を確認
git status

# コミット履歴を確認
git log

2. mainブランチの変更を元に戻す

git revertを使用して、mainブランチの不要な変更を取り消します。

# mainブランチに戻る
git checkout main

# 取り消したいコミットをrevertする
# 最新のコミットを取り消す場合
git revert HEAD

# または特定のコミットをrevertする場合
git revert <コミットハッシュ>

3. リモートのmainブランチを更新

# 変更をリモートリポジトリにプッシュ
git push origin main

4. 変更の救出 - Cherry-pickの活用

もし、mainブランチでの変更を保持したい場合は、cherry-pickを使用します。

# mainブランチでの変更のコミットハッシュを確認
git log

# 新しいdevelopブランチを作成
git checkout -b develop

# 特定のコミットを新しいブランチに適用
git cherry-pick <コミットハッシュ>

5. 必要に応じて変更を調整

cherry-pickした後、必要に応じて変更を微調整します。

# 必要な修正を加える
git add .
git commit --amend

6. 新しいブランチをリモートにプッシュ

# 新しいブランチをリモートにプッシュ
git push -u origin develop

7. マージリクエスト(プルリクエスト)の作成

GitHub/GitLabなどのプラットフォームで、以下の手順でマージリクエストを作成します:

ブラウザでリポジトリページを開く
「New Pull Request」または「Create Merge Request」をクリック
ベースブランチ(通常はdevelopまたはmain)を選択
コンパレブランチ(feature/your-feature-name)を選択
タイトルと詳細な説明を入力

何を変更したか
なぜその変更が必要か
関連するissueがあれば参照する

レビュアーを指定(チームのルールに従う)
「Create Pull Request」をクリック

プロのTips

  1. 事前防止が最善
  • 作業前に必ず git checkout -b feature/your-feature-name でブランチを切る
  • IDEやエディタのGit拡張機能を活用
  1. git revertの利点
  • 履歴を保持しながら変更を取り消せる
  • 共有リポジトリでも安全に使用可能
  1. コミット粒度
  • 小さく、論理的なコミットを心がける
  • 1つのコミットが1つの論理的な変更になるようにする

注意点

git revertは新しいコミットを作成して変更を取り消します
取り消したコミットの履歴は残ります
コンフリクトが発生する可能性があるので、必要に応じて手動で解決

まとめ

Git操作のミスは誰にでもあります。git revertを使えば、安全に変更を取り消し、クリーンな状態から作業を再開できます。落ち着いて対処することが大切です。

Happy Coding! 🚀

Discussion