2012-03-20 13 views
4

私は次のような状況に問題がある:Git:履歴の書き換えを元に戻しますか?

  • いくつかのコミットは、リモート(私たちのコードレビューシステム)にプッシュされている
  • しようとすると、開発者は、歴史(一部はリベース中にコミット編集した)ローカル
  • を書き換えています

このリモートにあるものにシングルコミットをリセットするにはどうしたらいいですか?このコミットメントを受け入れることはできません。

変更されたコミットは必ずしもHEADではないので、単に 'git reset -hard HEAD^& & git pull'を実行することはできません。

編集:

新しいコミットとして好ましくは2つのバージョン間の差分が作成されますが、それは本当に必要ではありません。

+0

リセットでどういう意味ですか?コミットを削除しますか?もしそうなら、 'git rebase'を見てください。特に' git rebase -i -commit-id^' – fajran

+0

@fajran:いいえ、私はコミットを取り除くつもりはありません。私はそれを私のリモコンのコミットとまったく同じにしたい。 –

+0

あなたのブランチをリモートと正確に同じにしますか?あなたはリモートを 'フェッチする 'ことができますし、それを'分岐'します。 – fajran

答えて

3

でREFLOGを確認します。次に、例えば、お好みのコミットに対応HEADを選ぶ

git reflog 

git reset --hard [email protected]{5} 

は、ブランチをポイント5にコミットされたポイントHEADにリセットします。

+0

私はreflogについて知っていましたが、それを使うために私の心を全く邪魔しませんでした。ありがとうございました。 –

+0

私は明らかにここの他の質問の1つによれば、 'git reset -hard ORIG_HEAD'も行うことができます...しかし、reflogは最も確かなアプローチのようです。 –

+0

reflogは命の恩人です:) – ralphtheninja

関連する問題