1

実装に数日かかる大きな機能に取り組んでいるときは、ローカルのgitリポジトリに対して多くの小さなコミットを行い、リモートのマスターリポジトリから他の人の変更をプルします。機能が完了すると、私のローカルgitリポジトリは次のようになります。

  1. ローカルコミット:機能Xの最後のステップ
  2. リモートコミット:B
  3. ローカルコミット:機能Xの一部
  4. ローカルコミット:機能Xの一部
  5. リモートコミット:A
  6. ローカルコミット:機能Xの最初のステップ。
  7. ..。

ここで、すべてのローカルコミットを、機能Xを追加する単一のコミットとしてリモートリポジトリにプッシュしたいと思います。この場合、「git rebase」を使用したコミットのスカッシュは機能しません。これは、リモートコミットが私によって行われないためです(2および5 )も潰す必要がありますが、これはオプションではありません。

私が理解できた唯一の方法は、リモートコミットのみのクリーンなブランチを作成し、ローカルの開発ブランチに対して「git diff」を発行し、結果のパッチをクリーンなブランチに適用することでした。次に、パッチを適用した変更をコミットしてプッシュします。もっと良い方法はありますか?

4

1 に答える 1

3

私は答えを見つけました:git rebase -iは実際にコミットを並べ替えることができ、すべてのローカルコミットが順番に並べ替えられると(リモートコミットとインターリーブされない)、すべてを1つにまとめることができます。

于 2012-08-31T13:26:51.523 に答える