まず、お詫びする必要があります-SOには「マージを元に戻す方法」の質問がたくさんありますが、私はgitに慣れていないので、ソリューションを自分の状況に適応させる方法を本当に理解していません(私は彼らがそうすることができると確信しています)。
私には2つのブランチがversionA
ありversionB
ます。にいくつかの変更を加えてversionA
、にマージしました。で行われた変更は上位互換性があるversionB
ため、これは問題ありません。次に、誤ってにマージしversionA
てしまったに違いないと思います。これは、との下位互換性がないため、問題ありません。versionB
versionA
versionB
versionA
どうすればこれを元に戻すことができますか?
物事をより明確にするために、これは私がしたことです:
versionA C--C--C--C'--M2
\ /
\ /
versionB C--M--C--C*
M: merged versionA into versionB. this is fine.
M2: accidentally merged versionB back into versionA
これが私が欲しいものです:
versionA C--C--C--C'
\
\
versionB C--M--C--C*
私がMercurialを使用している場合はhg rollback
、すべてがうまくいくか、ブランチhg update C'
のために将来のコミットを行いますが、これは死んだぶら下がりの頭として残ります(したがって、私はこの方法を好みます)。versionA
M2
rollback
ブランチM2
から最後のコミットをスクラブするgitの方法は何ですか?versionA
(すべての変更がプッシュされました)。