まず:あなただけがを共有していないブランチのためにこれを行う必要があります。ブランチが他の人によってチェックアウトされている場合、このプロセスはローカルコピーをリモートと同期させず、コミットをもうブランチに送ることはできません。これは並べ替えることができますが、潜在的に混乱です。
xxxxxxx Bad commit #3
yyyyyyy Bad commit #2
zzzzzzz Bad commit #3
wwwwwww This and everything before it are fine
あなたはwwwwwwww
後にコミットをドロップすると、一致するリモートブランチを修正したい:
は私が正しくあなたを理解していれば、あなたはこのような状況にいる、ということを考えます。
まず、外科手術をしている枝をバックアップしてください。厄介な場合は元に戻してから、削除したいブランチに戻ってください。
git checkout -b broken-estimation
git checkout estimation
git log
を実行して、保存したい最初のコミットのSHA1を見つけます。あなたはSHA1が、それにブランチをリセットすることを持っていたら:kkkkkk
は最初のSHA1です
git reset --hard kkkkkkk
あなたは枝の上に残しておきたいコミット。
git log
を再度実行して、このブランチの先端として目的のSHA1を確保してください。 git log
出力に表示される最初のコミットである必要があります。十分なコミットを整理していない場合は、git reset --hard
を適切なSHA1に戻して、より多くのコミットを削除してください。 git reset --hard kkkkkkk
続い
git checkout -B estimation broken-estimation
と先端にあなたがしたいコミットのSHA1を見つけるために、git log
をやり直し、:
あなたはあまりにも多くのコミットを削除した場合、あなたが取ったバックアップからestimation
枝を復元(コミット後に望ましくないコミットを削除するには、kkkkkkk
が実際に欲しいSHA1です)。
希望の状態に支店を持ってたら、古いバージョンの交換、リモートに固定ブランチをプッシュすることができます:あなたはあなたの修理が正しいことを特定できたら
git push -f the_proper_remote estimation
は、あなたが枝のバックアップコピーを削除することができます。
git branch -d broken-estimation
この回答を探すことができます:http://stackoverflow.com/a/1470452/1475228 –