機能ブランチを誤ってリモートマスターにプッシュしました。マスターを以前のコミットに戻したいのですが。 「現在のブランチをこのコミットに戻す」を選択すると、ローカルブランチのみが戻されます。リモートマスターが55先にあるため(偶発的なプッシュ)、戻したばかりのローカルマスターをリモートにプッシュできません。
SOおよびGoogleでこの問題を調べたところ、多くの人がコマンドラインを使用して強制プッシュを使用しています。しかし、ソースツリーを使用しているので、方法を考えたいと思います実際にはソースツリーを使用しています。
リベースオプションも見つけましたが、段階的なチュートリアルが見つからないようです。
何か案は?
Sourcetreeは-f
フラグを公開していません: https://answers.atlassian.com/questions/54469/how-do-i-perform-a-forced-Push-push-f -from-sourcetree
したがって、リモートを元の状態に戻す唯一の方法は、逆の順序で導入した各コミットを git revert
することです。
リモートがコミットA
にあり、コミットB
、C
およびD
を保持している機能ブランチをプッシュしたと仮定すると、
git revert D
git revert C
git revert B
git Push
プッシュされた履歴を変更するのではなく、新しい一連の変更をプッシュするため、プッシュは正常に機能します。
一連の復帰を1つのコミットに短縮したい場合は、
git rebase -i Origin/master
revert
コミットのそれぞれを選択してsquashed
にします。そうすると、Push
には、D
、C
、B
を一度に戻すコミットが1つだけ含まれます。