当我在处理一个需要几天时间才能实现的大型功能时,我会对本地 git 存储库进行许多小提交,并从远程主存储库中提取其他人的更改。功能完成后,我的本地 git repo 看起来像:
- 本地提交:功能 X 的最后一步
- 远程提交:B
- 本地提交:功能 X 的一部分
- 本地提交:功能 X 的一部分
- 远程提交:A
- 本地提交:功能 X 的第一步。
- ...
现在,我想将所有本地提交作为添加功能 X 的单个提交推送到远程仓库。在这种情况下,使用 'git rebase' 压缩提交将不起作用,因为远程提交不是由我完成的(2 和 5 ) 也需要被压扁,这不是一个选择。
我设法弄清楚的唯一方法是拥有一个只有远程提交的干净分支,针对我的本地开发分支发出“git diff”并将生成的补丁应用到干净的分支上。然后提交修补的更改并推送。有没有更好的办法?