2012-04-25 16 views
1

私はGitを使い始めています。私は何か間違っているように感じています。リポジトリのコミットとファイルの変更をプルリクエストに表示されないようにロールバックするにはどうすればよいですか?

私は自分のフォーク上で特定のコミットにロールバックしようとしています。コミットのすべての履歴とその変更をその時点まで消去しています。私はここで提案されたすべてのものを試しましたが、違いはありませんでした。私はプロジェクトにプルリクエストをする必要がありますが、すべてのコミットとマージコミットのトンを含めています。それに引っ張る人は、自分自身と同じくらい多くのコミットがないので、私は何か間違っていると信じています。

元に戻す必要がある唯一の理由は、リクエストに含まれたくないWIPコミットがあるためです。その前にきれいにしたいと思います。

ありがとうございます。

+0

コミットとマージをすべて再生し、1回のWIPコミットを削除するだけです。これは大変な作業であり、エラーが発生する可能性があります。あなたは 'git revert 'を使ってそのコミットを元に戻すことができます。' – CharlesB

+0

WIPブランチでマージしてはいけません。 – Learath2

+0

それはちょうどそうではありません...それはもっと似ています、私は愚かで、たくさんの命令とそれに挑戦していました、これに戻る過程で、私は本当に新鮮なものから始めたいと思います。これを行うことの一部は、私がどのように知っているかということです。 (そして、心配しないで、私のフォークから何も使用しない人がいるので、そうすることで問題は発生しません)。私はファイルを元に戻すためにプルの要求を最終的に行う必要があります。私がもう必要としないコミットがいくつかあります。上流からの更新をロールバックしてマージするだけで、後で変更を取り戻すことができます。 – Whitellama

答えて

0

git reset --hardを使用して、必要な限り戻ってコミットし、最後に新しいバージョンをプッシュします。 (--forceフラグを使用してリモートブランチを上書きする必要があります)

あなたがプッシュしたブランチで実際に何かを実行した場合、上書きすることを習慣にしないでくださいそれは解決するために彼ら自身の問題でそれらを残すだろう。

+0

提案していただきありがとうございます。しかし、それは私のために働いていません。私が(--forceフラグで)プッシュしようとすると、すべてが最新であることがわかります。なぜ私は私の人生のために理解することはできません。 – Whitellama

+0

あなたは正しいブランチを押していると確信していますか? – CharlesB

+0

Huh。それはされている必要があります...私はちょうど私の他のコンピュータからこれを試したので、あなたがすべて言ったようにそれは働いた。ありがとう。 – Whitellama

0

git reset --hard <commit_id>あなたが望むことをするために働くでしょう。シェルへのアクセス権がない場合(github repoなど)は、クライアントのボックスで同じことを行い、次に押して強制的にgit push -fとします。通常、送り先の現在のHEADが新しいHEADの祖先でない場合、プッシュは失敗します。

これを行うと、古いHEADをクローンしたり引っ張ったりした人は、非常に混乱することになります。彼らの将来の引き込みは、マージ失敗で死に、永遠にあなたを憎むでしょう。書き換えの履歴は、常に最後の手段であるべきです。

関連する問題