9

今では、「git rebase --interactive」を使用してコミットを結合し、コミット メッセージを変更する良い方法があることを知っています。

次の状況があります。

$ git rebase --interactive HEAD^^^^
pick 5b7c140 commitA
pick 40ffd7c commitB
pick 5e7647d commitC
pick 78bea2d commitD

Rebase [...]

また、以下の要件を処理する可能性はありますか?

commitA と commitC および commitB と commitD を新しいコミット cAC と cBD に結合しますか?

4

1 に答える 1

14

可能です - インタラクティブなリベースでコミットの順序を再配置することもできます:

pick 5b7c140 commitA
squash 5e7647d commitC
pick 40ffd7c commitB
squash 78bea2d commitD

また

pick 5b7c140 commitA
fixup 5e7647d commitC
pick 40ffd7c commitB
fixup 78bea2d commitD

この 2 つの違いはsquash、新しいコミットのコミット メッセージを編集できることです。一方、2 番目のコミット メッセージを破棄するだけで、結合されたコミットのためにfixup前のコミット メッセージを残します。pick(エディターの起動が十分に速い場合は、選択するだけの習慣がsquashあれば、コミットのメッセージの一部を使用する必要がないと思われる場合でも、コミット メッセージを確認する良い機会になりますfixup。)

ファイルの同じ部分を変更するcommitBと、リベースの競合が発生する可能性があります。commitC多くの場合、これらは簡単に整理できます。

于 2013-03-14T10:03:33.253 に答える