私は長い直線のgit履歴を持っています。いくつかのコミットを再構築したいので、フィーチャーブランチを作成し、git merge --no-ff master
を使用してマスターに戻してマージしたようにします。 ブレイクリニアgitは2つのマージされたブランチにコミットします
master
A -> B -> E -> F
\ /
C -> D
feature
理想
A -> B -> C -> D -> E -> F
master
現在
は私が
git checkout D
git checkout -b feature
git rebase B
git merge --no-ff E
しかしD
はすでにその歴史の中でB
を持っているような何かをすると考えられ、これは何もしません。私はE
をB
(Split a git branch into two branches?)から除外する方法を知っていますが、ここではE
に2つの親があります。
いくつかの追加の詳細は、もともとは私のプロジェクトがDesired
のように構造化されていて、E
は本当にマージコミットです。私は何とかして、古いコミットからいくつかの不要なファイルを削除するためにgit rebase
を使って自分の履歴を線形化しました。