質問

中間のマージ(スカッシュではなく削除)を取り外してから、最後の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 newonegit reset --hard HEAD^2 最後の2つのコミットメントを新しい支店に移動します。しかし、私がリベースをしたとき、それは私にマスターに統合されたテードブランチからのすべてのコミットを示しました|それらを削除することに消極的でした。

より良い方法はありますか、それとも先に進むべきですか?

編集:意図した状態グラフを更新して、より明確にしました。 2つの新しいコミット(aaaaaaabbbbbbb)国家を少し良く説明するためだけにそこにいるだけです(私は願っています)

役に立ちましたか?

解決

インタラクティブなリベッシングを使用してリベースします 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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top