如何应对许多进步提案

时间:2017-09-05 19:35:57

标签: git github version-control squash git-squash

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

  • 分页菜单控制器正常工作
  • XYZ的进展(如果笔记本电脑丢失,工作得以保存,那么节省工作就可以了。)

在功能结束时,有许多提交,我担心我正在污染提交历史记录。我已经考虑过Git壁球,但是一旦你提取更新,或者你推到你的分支后它就不起作用了。

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

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

1 个答案:

答案 0 :(得分:0)

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

1。壁球提交

要在分支上压缩提交,您可以使用git rebase -i branchname~n。而n是您想要开始壁球的提交金额。

例如,如果您需要将feature分支(EFGH(如下图)上的提交压缩到提交,

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