在git中提交Squashing是什么意思。如何在Github中压缩提交?
我是Git的新手,我要求分配给Coala-analyzer中的新手错误。我修复了该错误,现在我被要求压缩提交内容。我该怎么做?
最佳答案
您可以将Git视为工作目录快照的高级数据库。
Git的一个非常不错的功能是能够重写提交的历史记录。
这样做的主要原因是,很多这样的历史记录仅与生成它的开发人员相关,因此在将其提交到共享存储库之前,必须对其进行简化或使其更美观。
从惯用的 Angular 来看,压缩提交意味着将在该提交中引入的更改移到其父级中,以便最终得到一个提交而不是两个(或更多)提交。
如果多次重复此过程,则可以将n次提交减少为一个。
视觉上,如果您从标记为Start的提交开始工作,则需要
您可能会注意到,新的提交具有略深的蓝色阴影。这是故意的。
在Git中,压扁是通过Rebase来实现的,Rebase是一种称为Interactive Rebase的特殊形式。
为简化将一组提交重新建立到分支B中的时间,您可以应用这些提交所引起的所有更改,这些更改从B开始而不是其原始祖先开始。
视觉线索
再次注意不同的蓝色阴影。
交互式的重新设置基准使您可以选择应如何重新确定提交。
如果运行此命令:
git rebase -i branch
您最终将得到一个文件,其中列出了将被重新基准化的提交
pick ae3...
pick ef6...
pick 1e0...
pick 341...
我没有命名提交,但是这四个是从头到尾的提交
关于此列表的好处是是可编辑的。
您可以忽略提交,也可以将其压缩为。
您所要做的就是将第一个单词更改为南瓜。
pick ae3...
squash ef6...
squash 1e0...
squash 341...
如果关闭编辑器,但未发现合并冲突,那么您将获得以下历史记录:
在您的情况下,您不想基于另一个分支,而希望基于一个先前的提交。
为了转换历史记录,如第一个示例所示,您必须运行类似
git rebase -i HEAD~4
更改“命令”以压缩除第一个提交以外的所有提交,然后关闭编辑器。
有关更改历史记录的说明
在Git中,永远不会编辑提交。可以将它们修剪,设置为不可访问,克隆但不能更改。
重新确定基准时,实际上是在创建新的提交。
旧的不再可以通过任何引用访问,因此历史记录中没有显示,但它们仍然存在!
这是您实际上获得的变基:
如果您已经将它们推到某个位置,则重写历史记录实际上会创建一个分支!
关于git - 压缩git中的提交意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35703556/