1

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

  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 实际上允许重新排序提交,并且当所有本地提交重新排序为按顺序排列(不与远程提交交错)时,它们可以全部压缩为一个。

于 2012-08-31T13:26:51.523 回答