Git 如何处理多个进度承诺

Git 如何处理多个进度承诺,git,github,version-control,squash,git-squash,Git,Github,Version Control,Squash,Git Squash,我喜欢经常提交代码的小部分和逻辑部分。如果我正在开发一个大型功能(2周以上),将有许多提交,例如: 分页菜单控制器工作 XYZ中的进度(在一天结束时保存工作,以便在笔记本电脑丢失时保存工作) 在功能的末尾,有很多提交,我担心我正在污染提交历史。我曾经考虑过Git squash,但一旦您拉入更新,或者推到分支后,它就不起作用了 我正在考虑尝试更少和更大的提交,在推到我的fork特性分支之前,在小提交上使用本地挤压。然而,这似乎会妨碍我想要的详细提交历史记录 这里最好的解决方案是什么?即使您已将

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

  • 分页菜单控制器工作
  • XYZ中的进度(在一天结束时保存工作,以便在笔记本电脑丢失时保存工作)
在功能的末尾,有很多提交,我担心我正在污染提交历史。我曾经考虑过Git squash,但一旦您拉入更新,或者推到分支后,它就不起作用了

我正在考虑尝试更少和更大的提交,在推到我的fork特性分支之前,在小提交上使用本地挤压。然而,这似乎会妨碍我想要的详细提交历史记录


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

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

1.壁球比赛 要压缩分支上的提交,可以使用
git-rebase-i branchname~n
。而
n
是要开始挤压的提交量

例如,如果需要将
功能
分支(
E
F
G
H
上的提交挤压到提交,如下图所示

A---B---C---D develop
     \
      E---F---G---H   feature
您可以使用git rebase-i功能~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
2.将更改推送到远程 由于更改了分支上的历史记录,因此应该通过

git push -f

谢谢,这很有帮助。我现在应该能够避免拉入更新,挤压,然后强制推我的叉子。(我投了更高的票,但我的声誉太低,没有任何表现)