gitで中間マージを削除する方法は?
-
11-10-2019 - |
質問
中間のマージ(スカッシュではなく削除)を取り外してから、最後の2つのコミットを新しい支店に移動したいと思います。
これが私の現在です git log --graph
:
* 3a5c453 - (2 hours ago) last commit (HEAD, master)
* b6c19f1 - (2 hours ago) Merge branch 'tade' into HEAD
|\
* | be356d0 - (2 hours ago) previous commit
| * 65328dc - (3 hours ago) some other commit in branch tade
私はこれに終わりたいです:
* bbbbbbb - (some time in the future) a later commit on tade (tade)
* | aaaaaaa - (some time in the future) a later commit on master (master)
| * | 3a5c453 - (2 hours ago) last commit (HEAD, newone)
| * | be356d0 - (2 hours ago) previous commit
|/ |
| * 65328dc - (3 hours ago) some other commit in branch tade
私は使用することを考えました git rebase -i
ブランチとマージを削除してから、 git branch newone
と git reset --hard HEAD^2
最後の2つのコミットメントを新しい支店に移動します。しかし、私がリベースをしたとき、それは私にマスターに統合されたテードブランチからのすべてのコミットを示しました|それらを削除することに消極的でした。
より良い方法はありますか、それとも先に進むべきですか?
編集:意図した状態グラフを更新して、より明確にしました。 2つの新しいコミット(aaaaaaa
と bbbbbbb
)国家を少し良く説明するためだけにそこにいるだけです(私は願っています)
解決
インタラクティブなリベッシングを使用してリベースします 3a5c453
の上 be356d0
マージのコミットの代わりに b6c19f1
(つまり、移動するだけです 3a5c453
1つをコミットします)。その後、このようなものが必要です。
* xxxxxxx - (2 hours ago) Merge branch 'tade' into HEAD
|\
* | yyyyyyy - (2 hours ago) last commit (HEAD)
* | be356d0 - (2 hours ago) previous commit
| * 65328dc - (3 hours ago) some other commit in branch tade
その後、新しいブランチを作成するだけです。
git checkout -b newbranch yyyyyy
その後、削除できます xxxxxx
そして、マスターに何かをコミットし、これで終わる:
* zzzzzz - new commit on master
| * | yyyyyyy - (2 hours ago) last commit (HEAD)
| * | be356d0 - (2 hours ago) previous commit
| | * 65328dc - (3 hours ago) some other commit in branch tade
所属していません StackOverflow