hajime-f
@hajime-f (藤田 肇)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

develop ブランチに push すべきところを誤って master ブランチに push してしまった

Q&A

Closed

git の使い方を教えてください。いま下記の状態です。

(1) master から develop ブランチを切って作業をした
(2) develop ブランチで何度か commit した
(3) 本来は git push origin develop とすべきところを、間違えて git push origin master としてしまった
(4) その結果、develop ブランチの変更が、リモートの master ブランチに反映されてしまった

この状態からリモートレポジトリを元に戻し、あらためて git push origin develop としたいです。
なお、コミット履歴は下記のとおりです。

33e0459 * develop origin/master いろいろと機能を追加
41925cc * 関数を追加
2e1fcea * 諸々修正
2bdc6cb * いったんすっきりさせた
6b0eac3 * master 誤記を修正

おそらく、こう修正すればよいと考えています。

(1) git checkout master
(2) git revert 33e0459
(3) git push origin master
(4) git checkout develop
(5) git push origin develop

まず、上記(1)〜(5)の手順は正しいでしょうか?

また、実際に (2) まで実行してみたところ、コンフリクトが起きてしまいました。
これはどういう方針でコンフリクトを解消すればよいでしょうか?

1

1Answer

まず、上記(1)〜(5)の手順は正しいでしょうか?

正しくありません。 (2)で revert しようとしている 33e0459 は master の履歴に含まれていないので正しく revert できません。(2)まで実行したのであれば git revert --abort でキャンセルしてください。

修正の方針としては大きく3つあります。

  • (A) リモートの master の履歴を 6b0eac3 まで巻き戻し、develop の内容を反映させた事実を無かったことにする
    • リモートからコミットを取り除くことになるので、複数人で作業していてリモートの master を他の誰かが参照しているならやるべきではない。自分一人で作業しているなら手軽。
  • (B) ローカルの master を 33e0459 まで進めた上で、 6b0eac3 以降のコミットを新しいものから順にすべて revert する
    • 複数人で作業しているならこれが安全。1コミットずつ revert した履歴を残したいならこれ。
  • (C) ローカルの master を 33e0459 まで進めた上で、 6b0eac3 時点のファイルを取り出し、それをコミットする
    • これも安全。1コミットで元に戻したいならこれ。

(A)

git checkout master
git push --force origin master

(B)

git checkout master
git merge --ff develop
git revert 6b0eac3..HEAD
git push origin master

(C)

git checkout master
git merge --ff develop
git checkout 6b0eac3 -- .
git commit -a
git push origin master
2Like

Comments

  1. @hajime-f

    Questioner

    詳細にありがとうございます。
    やっぱり誤解だったんですね。。1人でいじり回す前に質問してよかったです。

    1人で開発していたので、方針Aでうまく修正できました!!
    ありがとうございました。

    git って難しいですね。。

Your answer might help someone💌