実装に数日かかる大きな機能に取り組んでいるときは、ローカルのgitリポジトリに対して多くの小さなコミットを行い、リモートのマスターリポジトリから他の人の変更をプルします。機能が完了すると、私のローカルgitリポジトリは次のようになります。
- ローカルコミット:機能Xの最後のステップ
- リモートコミット:B
- ローカルコミット:機能Xの一部
- ローカルコミット:機能Xの一部
- リモートコミット:A
- ローカルコミット:機能Xの最初のステップ。
- ..。
ここで、すべてのローカルコミットを、機能Xを追加する単一のコミットとしてリモートリポジトリにプッシュしたいと思います。この場合、「git rebase」を使用したコミットのスカッシュは機能しません。これは、リモートコミットが私によって行われないためです(2および5 )も潰す必要がありますが、これはオプションではありません。
私が理解できた唯一の方法は、リモートコミットのみのクリーンなブランチを作成し、ローカルの開発ブランチに対して「git diff」を発行し、結果のパッチをクリーンなブランチに適用することでした。次に、パッチを適用した変更をコミットしてプッシュします。もっと良い方法はありますか?