80

元に戻したい git リポジトリにいくつかの変更を加えました。

私のgitレポは次のようになりました:

A-B----     master
   \   /
    C-D     * develop

私はdevelopブランチにいましたが、それがブランチと異なることを忘れ、 にmaster変更を加えdevelop、 にマージしmaster、リモート ( と呼ばれるpublish) にプッシュしました。

B (共通の祖先) からマスターに変更がなかったため、git は早送りマージを行いました。

今、私のレポは次のようになります。

A-B-C-D   master, develop, remotes/publish/master, remotes/publish/develop.

master最後のマージを元に戻し、 Bに復元したかったのです。

Gitで最後のコミットを元に戻す方法で読んだことから? 、以前はブランチをリビジョン Bgit reset sha-of-Bに復元していました。master

質問:

  • developリビジョン Dに復元するにはどうすればよいですか?
  • これらの変更をリモート/パブリッシュに戻すにはどうすればよいですか?
4

3 に答える 3

102

ブランチ マスターをリセットすると、develop ブランチには影響しません。すべてを順番に評価するには、次のことを行う必要があります。

git checkout master
git reset --hard sha-of-B
git checkout develop
git reset --hard sha-of-D
git checkout master
git merge develop --no-ff
于 2013-01-13T21:53:09.740 に答える
31
于 2016-05-09T15:42:01.583 に答える
0

developを実行したときにチェックアウトされていたようですがgit reset、これがあなたを台無しにしました。

develop次のように修正できます。

git checkout develop
git merge --ff-only D

masterこれで、 B に復元できます。

git checkout master
git reset --hard B

に戻ってdevelopプッシュします。

git checkout develop
git push develop
于 2013-01-13T21:53:49.157 に答える