我喜欢经常提交代码的小型逻辑部分。如果我正在处理大型功能(2周以上),那么会有许多提交,例如:
在功能结束时,有许多提交,我担心我正在污染提交历史记录。我已经考虑过Git壁球,但是一旦你提取更新,或者你推到你的分支后它就不起作用了。
我正在考虑尝试进行越来越少的提交,并在推送到我的fork功能分支之前在小型提交上本地使用squash。但是,这似乎会妨碍我喜欢的详细提交历史。
这里最好的解决方案是什么?
答案 0 :(得分:0)
即使您已将分支机构推到远程,您仍然可以压缩本地提交,然后强行推送到远程。
要在分支上压缩提交,您可以使用git rebase -i branchname~n
。而n
是您想要开始壁球的提交金额。
例如,如果您需要将feature
分支(E
,F
,G
和H
(如下图)上的提交压缩到提交,
A---B---C---D develop
\
E---F---G---H feature
您可以使用git rebase -i feature~4
,然后在交互式窗口中,将提交显示为:
pick E
pick F
pick G
pick H
您可能需要更改最后三次提交F
,G
和H
才能进行压缩。输入i
进行插入,将其更改为:
pick E
squash F
squash G
squash H
然后输入 Esc 按钮并输入:wq
以退出交互式窗口。提交历史将如下:
A---B---C---D develop
\
E' feature
由于您更改了分支上的历史记录,因此您应该通过
强制推送到远程git push -f