2011-01-22 27 views
1

リモートリポジトリに「悪い」コミットがある状況があります。例: 汚染されたリモートのマスターブランチまたはAnti-Cherry-Pick

... o ---- C ---- A ---- B origin/master 
Aが悪いです(ただし、Bが良いです)

私は、リモートなりたい...

... o ---- C ---- B origin/master 
        \ 
        A origin/dev 

これを行う方法を私に明らかにされていません。

リベースが不適切な場合は別の結果が必要です。

... o ---- C ---- A ---- B ---- ~A origin/master 
          \ 
          - origin/dev 

この結果、Aコミットを含むdevブランチと、Aコミットを含まないマスターとなります。 改訂された質問は: アンチチェリーピックをする方法? リポジトリを状態CからAに変更するパッチを生成するのではなく、BをAに変更するパッチを適用します。

+0

明らかに、共有リポジトリのrebaseは不正な形式です。この場合、それは受け入れ可能です。一般的には、もっと一般的な解決策が必要です。 – phreed

+0

反チェリーピックは復帰と呼ばれていますか? – phreed

答えて

3

同じリポジトリをローカルに持つようにプルします。

使用git rebase --interactive(あなたはインタラクティブなリベースに慣れていない場合this rundownを参照してください)あなたは今

... o ---- o ---- B ---- A master 

チェックアウトその場所から新しいブランチdevのを持っているように、あなたが

を取得するので、AとBのコミットの順序を変更するには
... o ---- o ---- B ---- A master, dev 

マスターブランチに切り替えて、git reset --hard HEAD^を実行して、そのブランチを1回コミットし直します。あなたは今持っている

今あなたは金になるはずです。 (リモートリポジトリの履歴を書き換えるため、--forceが必要です。危険であり、他の開発者が既にそれを取得している場合はお勧めできません)。

関連する問題