通常、ブランチをマスターからスカッシュにマージする前に、小さなコミットを修正する前に(コミットメッセージは単に「リファクタ」です)、マスターと子の両方をマージしたより大きく複雑なブランチではどうしたらいいですか?様々なステージ?私はこの単純なシナリオ(グーグル・グーグル)に基づいてrebaseが動作すると確信しています:git - マスターにマージする前に複雑なブランチをクリーンアップする方法は?
* (newest commit)
|\
* |
| * grandchild
* |
|/
* child
|
/
|
* master (oldest commit)
しかし、これはどうですか?
* (newest commits)
|\
* |
/| * grandchild
* * |
| |/
| * child
* |
|/
|
* master (oldest commit)
多大な労力をかけずにこの履歴を簡略化する方法はありますか?私はちょうどgit rebase -i master
を試して、多くの競合があります(そのうちのいくつかはrerere
のおかげで空白ですが、解決するのは難しいものがあります)。明確にするために、これは私の望ましい結果である(明らかに私達はちょうどキャッチアップマスターにマージ実行することができますし、我々は線形の歴史を持っています;子ブランチのコミットの最終的な数は任意である):
* (newest commit)
|
* child
|
/
|
* master (oldest commit, though newest in master)
私の謝罪これが重複した質問であれば、それは可能です(ただし、私の問題を具体的に解決するものは見つかりません)。
この場合、 'rebase -i'を試しましたか? –
あなたは 'rebase -i'を使い、無用なコミットを落とす必要があります(コンフリクトを解消するために変更を保存してください) –
@JoshLeeはい - rerereでも多くの競合があります – AlexMA