2017-12-27 8 views
0

私の機能ブランチを開発ブランチにマージしたい。しかし、コミットの1つは、今私が望むコミットを元に戻しました。リバースコミットを含むリベース

 
* develop - merge revert PR 
|\ 
| * Revert undesired merge 
|/ 
* Merge (undesired) 
|\ 
| * commit A 
|/ 
| 
... (lots of commits) 
| 
| * feature - commit B 
| * commit A' 
|/ 
* 

git rebase -i developコミットA 'が表示されません。私は成功なしで様々なオプション(-p、--keep-empty、-f)を試しました。

はどのようにして個別にチェリーピッキングせずに

 
    * feature - commit B 
    * commit A' 
/
* develop - merge revert PR 

で終わることができますか?

(注:最新のコミットはダイアグラムの一番上にあります。また、AとA 'は同じ内容を持っています;つまり、それらは同じ内容です。同じ変更を適用してください)

+0

最初の図は不明です。 'feature'は' '発展する'''にどのように関連していますか?あなたが描いたように、私はそれらが同じデータベース内にある独立した木だと思うでしょうが、あなたが言ったことから、私はそれを疑っています。いずれにせよ「A」は「開発」の歴史のどこにもないように見えるので、なぜ「開発」の再構築に現れるようにするオプションがあるのだろうか? –

+0

@MarkAdelsberger私は関係を示すためにダイアグラムを改訂しました。 – TrueWill

+0

私は決してマージを元に戻すことをお勧めします。代わりにリセットしてください。 – evolutionxbox

答えて

2

rebaseは、 "コミットA"がまだマージされていない時点からその予定リストを把握する必要があります。 undesiredがでブランチやマージ元に戻すのSHAどちらかがコミットされ

git rebase -i undesired~ --onto develop 

...:代わりにgit rebase -i develop

、試してみてください。

別のオプションは、次のようになります。

git rebase -i HEAD~2 --onto develop 

... "develop上に最後の二つのコミットをリベース" という意味します。

+0

最初のオプションは完全に機能しました。ありがとうございました!! – TrueWill

関連する問題