Git - リモートブランチ(オリジンではない)にプッシュされたリベースを元に戻す方法 質問する

Git - リモートブランチ(オリジンではない)にプッシュされたリベースを元に戻す方法 質問する

私はローカル ブランチでいくつかの変更を行っていましたが、完了したらすべてをリモート ブランチにプッシュしました。ブランチをdevelopにマージする前に、他の人がそこに多くのコードをマージしていたため、リベースを行う必要があると考えました。リベースを行って競合を解決した後、リモート ブランチにプッシュしました。残念ながら、競合を解決した方法が間違っていたため、リベースが行われる前に戻って、リモート ブランチを新しい状態に更新する必要があります。

私が試したこと

  1. 頭をリセットする

    git reset --hard HEAD@{x} //ここでxはリベース直前のヘッドです

これは機能し、ローカル ブランチの変更を元に戻しますが、リモートにプッシュできる新しいコミットが作成されないため、リモート ブランチをどのように更新すればよいかわかりません。

ベストアンサー1

リモートリポジトリの履歴を書き換えるべきではありません。

  1. 壊れたものを押すと
  2. 誰かが引っ張る
  3. 異なる歴史を強制的に押し付ける

混乱を解消しなければならないという問題だけでなく、変更をプルした他の全員にも影響が出ます。誰もプルしていないと確信できない限り、強制的に押し込まないでください

代わりに、次のいずれかを使用してコミットを元に戻す必要があります。

>> git revert HEAD@{y}   # where HEAD@{y} is the faulty commit

マージの場合、1 つのコミットだけが乱雑だった場合。

複数のコミットをマスターブランチに転送するリベースの場合は、

>> git revert --no-commit HEAD
>> git revert --no-commit HEAD~1
>> git revert --no-commit HEAD~2
   ...
>> git revert --no-commit HEAD@{x}
>> git commit -m "Sorry folks for the big mess I made"

ここで、 はとの間にあるすべてのHEAD~yコミットです。HEAD@{x}HEAD

これにより、影響を受けるすべてのコミットが 1 つの大きなコミットで効果的に元に戻されます。

おすすめ記事