如何处理许多进度提交

How to Deal with Many Progress Commits

我喜欢经常提交小的、逻辑部分的代码。如果我正在处理一个大型功能(2 周以上),将会有很多提交,例如:

在功能的最后,有很多提交,我担心我会污染提交历史。我考虑过 Git squash,但是一旦你引入更新,或者在你推送到你的分支之后,它就不起作用了。

我正在考虑尝试进行越来越少的提交,并在推送到我的分支功能分支之前在本地对小提交使用压缩。但是,这似乎会妨碍我想要的详细提交历史记录。

最好的解决方案是什么?

即使您已将分支推送到远程,您仍然可以压缩本地提交,然后强制推送到远程

1。壁球提交

要压缩分支上的提交,您可以使用 git rebase -i branchname~n。而 n 是您要开始压缩的提交数量。

例如,如果您需要将 feature 分支上的提交(EFGH 压缩为一个提交,

A---B---C---D develop
     \
      E---F---G---H   feature

您可以使用 git rebase -i feature~4,然后在交互式 windows 中,提交将显示为:

pick E
pick F
pick G
pick H

您可能需要将最后三个提交 FGH 更改为压缩。 input i 插入,修改为:

pick E
squash F
squash G
squash H

然后输入Esc键并输入:wq退出交互window。提交历史将像:

A---B---C---D develop
     \
      E'  feature

2。将更改推送到远程

既然你改变了分支的历史,你应该通过

强制推送到远程
git push -f