2012-11-22 10 views
5

ローカルブランチでいくつかの変更を行っていましたが、完了したらすべてをリモートbrachにプッシュしました。ブランチを開発する前に、私は他の人がそこで多くのコードをマージしていたので、私はリベースを行うべきだと思った。私がrebaseしていくつかの競合を解決したとき、私は遠隔支店に押し込んだ。残念ながら、私が紛争を解決した方法は間違っていたので、今や私はリベースが起こる前に戻り、リモートブランチを新しい状態に更新する必要があります。私は頭Git - リモートブランチ(原点ではない)にプッシュされたrebaseを元に戻す方法

Gitは、xがちょうどリベース

前頭部である--hard HEADの@ {X}を//リセットリセット

  1. を試してみました何

    これは動作し、私のローカルブランチの変更を元に戻しますが、リモートブランチを更新する方法を知らないので、プッシュできる新しいコミットが作成されないためoリモート。

+2

pushコマンドで '-f'フラグを使用します。 –

答えて

4

  1. 場合は、壊れたものをプッシュするので、あなたはリモートリポジトリの歴史を書き換えるべきではありません
  2. 誰かが
  3. あなた異なる歴史を力プッシュプル

だけでなく、あなたが希望混乱を修正しなければならないという問題を抱えていますが、変更を取り上げた他のすべての人がいます。だから誰もそれを引っ張ってこないと確信できない限り、は強制的にプッシュしません

代わりに一つだけのコミット場合

>> git revert [email protected]{y} # where [email protected]{y} is the faulty commit 

のいずれかを使用してコミット元に戻す必要がありますが、マージの場合には、厄介でした。あなたがする必要がmasterブランチ上にいくつかのコミットをtransplatendリベースの場合は

すべてHEAD~y[email protected]{x}HEADの間でコミットしている

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

これは、影響を受けたすべてのコミットを単一の大きなコミットで効果的に取り消します。

+0

それはありがとう、魅力のように働いていた!プラス、あなたは右に私はプルを強制するべきではありませんでした。 – user1844566

関連する問題