2012-03-05 11 views
1

私は同様の質問と回答をいくつか見つけましたが、それらはローカルコミットのみを心配しています(そして、答えは変更を共有した後にこれをしないと言うこともあります)。既にリモートにプッシュされた変更を破棄する方法は?

私は、次のしている:Fは、そのマスターがリセットされたと言ってコミットすることができ

someBranch 
     ↓ 
    C-D-E (HEAD) 
/
A-B-F 
    ↑ 
master = origin/master 

A-B-C-D-E (HEAD) 
     ↑ 
     master = origin/master 

私が欲しいのはこれです。基本的には、C、D、Eの変更を取り消したいですが、リポジトリにリセットが表示されても構いません。

これができない場合は、私の最も近い選択肢は何ですか?

編集:明確にする:私はプロジェクトに取り組んでいる唯一の人ではない。

答えて

0

これらのすべてのコミットでgit revertを実行してから、上流にプッシュするだけです。それらのすべてのコミットを元に戻します。

+0

git revertは、変更を元に戻す新しいコミットを生成することです – linquize

+0

ポスターは、リセットが履歴に表示されているかどうかは関係ありませんので、これも有効なアプローチだと思いました。 – gtr32x

1

A非常に残忍なソリューションを使用すると、誰もが枝を引っ張っていないことがわかっている場合は、例えばにプッシュので、これは許容できるかもしれません

git branch someBranch 
git reset --hard HEAD~3 
git push --force 

になりますそのプロジェクトに取り組んでいる唯一の人はあなたです。そうしないと、おそらく問題が発生します。

+0

これがリモートリポジトリに設定されていないことを確認してください:git config receive.denyNonFastForwards true – linquize

+0

私の問題は私だけではないということです。 – subsub

+0

@devconsole F – ralphtheninja

関連する問題