如何压缩与远程提交交错的多个本地git提交

时间:2012-08-31 13:26:52

标签: git

当我正在开发一个需要几天时间才能实现的大型功能时,我会对本地git存储库执行许多小型提交,并从远程主存储库中提取其他更改。功能完成后,我的本地git repo看起来像是:

  1. 本地提交:功能X的最后一步
  2. 远程提交:B
  3. 本地提交:功能X的一部分
  4. 本地提交:功能X的一部分
  5. 远程提交:A
  6. 本地提交:功能X的第一步。
  7. ...
  8. 现在,我想将所有本地提交推送到远程仓库作为添加功能X的单个提交。在这种情况下,使用'git rebase'进行提交将无效,因为远程提交不是由我完成的( 2和5)也需要被压扁,这不是一种选择。

    我设法弄清楚的唯一方法是拥有一个只有远程提交的干净分支,对我的本地开发分支发出'git diff'并将结果补丁应用到clean分支上。然后提交补丁更改并推送。还有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

我找到了答案:git rebase -i实际上允许重新排序提交,并且当所有本地提交按顺序重新排序(不与远程提交交错)时,它们可以全部压缩成一个。