SOおよびその他のドキュメントでこれを調査しました。リベース、マージ、チェリーピッキング、デタッチヘッドを試しました。
これを文字通り6時間試みた後、質問をする時が来ました!
これが私が始めていることです:
A-B-C-D-E-F-G master
変更したいのは次のとおりです。
A-B F-G master
\ /
C-D-E dev
私が来た最も近いものは次のとおりです。
A-B C-D-E-F-G-H Main
\ /
C-D-E dev
\
F-G master
ブランチを機能させるには、別のブランチ名とダミーのコミットを追加する必要がありました。
しかし、これは変化がないよりも悪いことです。
助けてください!
返信後に更新
返信ありがとうございます。
はい、私の「欲しいもの」はあまり明確ではありませんでした。うまくいけば、これはそれを明確にします:
A-B - F-G master
\ /
C-D-E dev
つまり、F の「マスター」は、B とブランチ「dev」がマージされた結果です。
まだ動作していません
回答を試みてくれた@frasertweedaleに感謝します。
私はあなたの指示に注意深く従いましたが、最終的には次のようになりました。
A-B - "merge branch 'dev'"-G master
\ /
C-D-E dev
\
F-G-"merge branch 'dev'"-F-G
これが難しいことを嬉しく思います。これに 7 時間を費やした今、私はそれほど悪くはありません!
最終結果 @frasertweedale が言ったように、これはぶら下がっているコミットを除いて、まさに私が望んでいたものです。
したがって、ぶら下がりを取り除く必要があります。
わかりやすくするために、以下に再描画しました。
A-B - "merge branch 'dev'"-G2 master
\ /
C-D-E dev
\
F1-G1-"merge branch 'dev'"-F2-G2
そして、このコマンドはクリーンアップを行います:
git rebase -p --onto F1^ F1
結果:
A-B - "merge branch 'dev'"-G2 master
\ /
C-D-E dev
「merge branch 'dev'」には元の F コミットが含まれており、もちろん、そのように再コメントすることができます。