私はローカル ブランチでいくつかの変更を行っていましたが、完了したらすべてをリモート ブランチにプッシュしました。ブランチをdevelopにマージする前に、他の人がそこに多くのコードをマージしていたため、リベースを行う必要があると考えました。リベースを行って競合を解決した後、リモート ブランチにプッシュしました。残念ながら、競合を解決した方法が間違っていたため、リベースが行われる前に戻って、リモート ブランチを新しい状態に更新する必要があります。
私が試したこと
頭をリセットする
git reset --hard HEAD@{x} //ここでxはリベース直前のヘッドです
これは機能し、ローカル ブランチの変更を元に戻しますが、リモートにプッシュできる新しいコミットが作成されないため、リモート ブランチをどのように更新すればよいかわかりません。
ベストアンサー1
リモートリポジトリの履歴を書き換えるべきではありません。
- 壊れたものを押すと
- 誰かが引っ張る
- 異なる歴史を強制的に押し付ける
混乱を解消しなければならないという問題だけでなく、変更をプルした他の全員にも影響が出ます。誰もプルしていないと確信できない限り、強制的に押し込まないでください。
代わりに、次のいずれかを使用してコミットを元に戻す必要があります。
>> 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 つの大きなコミットで効果的に元に戻されます。