如何处理许多进度提交
How to Deal with Many Progress Commits
我喜欢经常提交小的、逻辑部分的代码。如果我正在处理一个大型功能(2 周以上),将会有很多提交,例如:
- 分页菜单控制器工作
- 在 XYZ 方面取得进展(在一天结束时保存工作,因此如果笔记本电脑丢失,工作也会保存)
在功能的最后,有很多提交,我担心我会污染提交历史。我考虑过 Git squash,但是一旦你引入更新,或者在你推送到你的分支之后,它就不起作用了。
我正在考虑尝试进行越来越少的提交,并在推送到我的分支功能分支之前在本地对小提交使用压缩。但是,这似乎会妨碍我想要的详细提交历史记录。
最好的解决方案是什么?
即使您已将分支推送到远程,您仍然可以压缩本地提交,然后强制推送到远程。
1。壁球提交
要压缩分支上的提交,您可以使用 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
,然后在交互式 windows 中,提交将显示为:
pick E
pick F
pick G
pick H
您可能需要将最后三个提交 F
、G
和 H
更改为压缩。 input i
插入,修改为:
pick E
squash F
squash G
squash H
然后输入Esc键并输入:wq
退出交互window。提交历史将像:
A---B---C---D develop
\
E' feature
2。将更改推送到远程
既然你改变了分支的历史,你应该通过
强制推送到远程
git push -f
我喜欢经常提交小的、逻辑部分的代码。如果我正在处理一个大型功能(2 周以上),将会有很多提交,例如:
- 分页菜单控制器工作
- 在 XYZ 方面取得进展(在一天结束时保存工作,因此如果笔记本电脑丢失,工作也会保存)
在功能的最后,有很多提交,我担心我会污染提交历史。我考虑过 Git squash,但是一旦你引入更新,或者在你推送到你的分支之后,它就不起作用了。
我正在考虑尝试进行越来越少的提交,并在推送到我的分支功能分支之前在本地对小提交使用压缩。但是,这似乎会妨碍我想要的详细提交历史记录。
最好的解决方案是什么?
即使您已将分支推送到远程,您仍然可以压缩本地提交,然后强制推送到远程。
1。壁球提交
要压缩分支上的提交,您可以使用 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
,然后在交互式 windows 中,提交将显示为:
pick E
pick F
pick G
pick H
您可能需要将最后三个提交 F
、G
和 H
更改为压缩。 input i
插入,修改为:
pick E
squash F
squash G
squash H
然后输入Esc键并输入:wq
退出交互window。提交历史将像:
A---B---C---D develop
\
E' feature
2。将更改推送到远程
既然你改变了分支的历史,你应该通过
强制推送到远程git push -f