2012-03-31 16 views
21

私は地獄を引き起こしている変更を行ったレポを持っており、それは存在しなかったふりをしたいと思います。 git-p4で更新されているものの上に既存のレポをスプライスするという、複雑で複雑な記事ですが、実際には本当に本当に本当にgitには存在しない変化をふりまえさせて欲しいです。Git:hgストリップに相当するものはありますか?

Mercurialの場合、私はhg stripで問題を解決できると確信していますが、Gitでそのようなコマンドを見つけることはできません。

お寄せいただきありがとうございます。

答えて

26

実行するコマンドが複数あります。最初の人は、他の人が言及したように、git resetです。あなたはチェンジ前にちょうどあなたが取り除くしたいものを見つけたい、と

git reset --hard <changeset> 

これはそのチェンジを指すように現在のブランチヘッド(およびインデックス)を変更します使用していますが、よ「悪い」チェンジセットはがまだ存在しますです。プッシュするとインクルードされませんが、となります。ローカルリポジトリをクローンしても、ログとチェックアウトのコマンドで参照することができます。

それへの他の参照(例えば、後続のコミット、タグ、等が...)あなたは、その後でそれをクリーンアップすることができますが存在しないと仮定すると:私も言及しており、このコマンドをhttp://help.github.com/remove-sensitive-data/のおかげで見つけ

git gc --prune=now 

あなたがリモートの場所にその "悪い"チェンジセットをプッシュした場合(hg stripのように)通常のgitコマンドで削除することはできませんが、サーバー上のリポジトリを削除して再作成する必要がありますキャッシュされたページをクリーンアップします。

2

git resetのドキュメントをお読みください。私はMercurialに精通しているわけではありませんが、this documentが正しく理解されていれば、git resetは同じことをやり遂げます。すなわち、リポジトリを履歴の前のポイントに戻します。

This documentは、詳細についてはresetコマンドについて説明し、this oneは、間違いを修正するためのさまざまなオプションについて簡単に説明します。

4

As larsks saidgit reset --hardはあなたが望んでいた歴史に戻ることができます:

  1. あなたがgit logを使用してに戻りたい正しいSHA値を検索します。
  2. 戻る場合はgit reset --hard shaを実行してください。
関連する問題