2

中間マージを削除し (スカッシュではなく削除)、最後の 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ブランチ tade とのマージを削除してgit branch newoneからgit reset --hard HEAD^2、最後の 2 つのコミットを新しいブランチに移動するために使用することを考えました。ただし、リベースを実行すると、マスターにマージされた tade ブランチからのすべてのコミットが表示され、| それらを削除することに消極的でした。

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

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

4

1 に答える 1

1

マージ コミットの代わりにインタラクティブなリベースを使用してリベース3a5c453します(つまり、コミットを 1 つ下に移動します)。次に、次のようなものが必要です。be356d0b6c19f13a5c453

*   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
于 2011-01-16T18:34:56.003 に答える