0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2025-03-20

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 誤記を修正

回復方法をいろいろ検索してもこれといった方法が見当たらず、思い切って質問したところ、神が降臨して丁寧に手順を教えてくださったので(ありがとうございました)、備忘を兼ねて記録に残します。

回復手順

状況に応じて下記3つの方針がある。

方針A

リモートの master の履歴を 6b0eac3 まで巻き戻し、develop の内容を反映させた事実を無かったことにする。

$ git checkout master
$ git push --force origin master
$ git checkout develop
$ git push origin develop

リモートからコミットを取り除くことになるので、複数人で作業していてリモートの master を他の誰かが参照しているならやるべきではない。自分一人で作業しているなら手軽。

方針B

ローカルの master33e0459 まで進めた上で、6b0eac3 以降のコミットを新しいものから順にすべて revert する。

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

複数人で作業しているならこれが安全。1コミットずつ revert した履歴を残したいならこれ。

方針C

ローカルの master33e0459 まで進めた上で、6b0eac3 時点のファイルを取り出し、それをコミットする。これも安全。1コミットで元に戻したいならこれ。

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

git むづかしい

私は気楽な個人開発で1人作業していたので、方針Aでサクッと解決できたんですが、これがチーム開発だとそうはいかないですよね。現場で顔を青くする様子が目に浮かびます。

それにしても、git むづかしすぎない…?🫠
人類(特に私)には早すぎるツールなのかもしれない…。

0
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?