私たちの一般的な開発ワークフローは、ブランチb
をチェックアウトし、それに束をコミットしてから、それらすべてのコミットを1つにまとめることです(まだb
にあります)。
ただし、すべてのコミットを潰すためのrebase -i
プロセス中に、複数のステップで競合が頻繁に発生します。
基本的に、ブランチをb
での最終コミット時のリポジトリの状態を表す1つのコミットに変更したい
いくつか検索しましたが、探しているものが正確に見つかりませんでした。マージする前に押しつぶされた機能ブランチをテストしたいので、merge --squash
はしたくありません。
コミット情報が必要ない場合は、ソフトリセットを実行できます。その後、ファイルはそのまま残り、コミットすると、このコミットはリセットしたコミットの上になります。
リセットするコミットを見つけるには:
git merge-base HEAD BRANCH_YOU_BRANCHED_FROM
次に
git reset --soft COMMIT_HASH
次に、コミットを作り直します。おそらく次のようになります。
git commit -am 'This is the new re-created one commit'
これはRasmusからの回答に似ていますが、常に機能する3つのステップに分かれています。
$ git merge feature1
$ git reset --soft HEAD@{1}
$ git commit -c feature1
説明: