-2

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

  • 分页菜单控制器工作
  • XYZ 中的进度(在一天结束时保存工作,因此如果笔记本电脑丢失,则保存工作)

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

我正在考虑尝试进行越来越大的提交,并在推送到我的 fork 功能分支之前在本地对小型提交使用 squash。但是,这似乎会阻碍我喜欢的详细提交历史。

这里最好的解决方案是什么?

4

1 回答 1

0

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

1. 壁球提交

要压缩分支上的提交,您可以使用git rebase -i branchname~n. whilen是你想要开始 squash 的提交量。

例如,如果您需要将feature分支(E、、 FGH图)上的提交压缩为提交,

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

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

pick E
pick F
pick G
pick H

您可能需要更改最后三个提交FGH进行压缩。i要插入的输入,将它们更改为:

pick E
squash F
squash G
squash H

然后输入Esc按钮并输入:wq退出交互窗口。提交历史如下:

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

2.将更改推送到远程

由于您更改了分支上的历史记录,因此您应该强制推送到远程

git push -f
于 2017-09-06T01:44:03.033 回答