在git中提交Squashing是什么意思。如何在Github中压缩提交?

我是Git的新手,我要求分配给Coala-analyzer中的新手错误。我修复了该错误,现在我被要求压缩提交内容。我该怎么做?

最佳答案

您可以将Git视为工作目录快照的高级数据库。

Git的一个非常不错的功能是能够重写提交的历史记录。
这样做的主要原因是,很多这样的历史记录仅与生成它的开发人员相关,因此在将其提交到共享存储库之前,必须对其进行简化或使其更美观。

从惯用的 Angular 来看,压缩提交意味着将在该提交中引入的更改移到其父级中,以便最终得到一个提交而不是两个(或更多)提交。
如果多次重复此过程,则可以将n次提交减少为一个。

视觉上,如果您从标记为Start的提交开始工作,则需要

git - 压缩git中的提交意味着什么?-LMLPHP

您可能会注意到,新的提交具有略深的蓝色阴影。这是故意的。

在Git中,压扁是通过Rebase来实现的,Rebase是一种称为Interactive Rebase的特殊形式。
为简化将一组提交重新建立到分支B中的时间,您可以应用这些提交所引起的所有更改,这些更改从B开始而不是其原始祖先开始。

视觉线索

git - 压缩git中的提交意味着什么?-LMLPHP

再次注意不同的蓝色阴影。

交互式的重新设置基准使您可以选择应如何重新确定提交。
如果运行此命令:

 git rebase -i branch

您最终将得到一个文件,其中列出了将被重新基准化的提交
 pick ae3...
 pick ef6...
 pick 1e0...
 pick 341...

我没有命名提交,但是这四个是从头到尾的提交

关于此列表的好处是是可编辑的
您可以忽略提交,也可以将其压缩为
您所要做的就是将第一个单词更改为南瓜。
 pick ae3...
 squash ef6...
 squash 1e0...
 squash 341...

如果关闭编辑器,但未发现合并冲突,那么您将获得以下历史记录:

git - 压缩git中的提交意味着什么?-LMLPHP

在您的情况下,您不想基于另一个分支,而希望基于一个先前的提交。
为了转换历史记录,如第一个示例所示,您必须运行类似
git rebase -i HEAD~4

更改“命令”以压缩除第一个提交以外的所有提交,然后关闭编辑器。

有关更改历史记录的说明

在Git中,永远不会编辑提交。可以将它们修剪,设置为不可访问,克隆但不能更改。
重新确定基准时,实际上是在创建新的提交。
旧的不再可以通过任何引用访问,因此历史记录中没有显示,但它们仍然存在!

这是您实际上获得的变基:

git - 压缩git中的提交意味着什么?-LMLPHP

如果您已经将它们推到某个位置,则重写历史记录实际上会创建一个分支!

关于git - 压缩git中的提交意味着什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35703556/

10-11 02:46
查看更多