Git – Squash

Git 中,squash 一词是用来将之前的提交压成一个。它不是一个命令;相反,它是一个关键词。Squash是一种很好的技术,用于在转发给其他人之前对特定的修改进行分组。你可以用引人注目的交互式 rebase 命令将几个提交合并成一个提交。

如果你是一个Git用户,那么你一定已经意识到Squash提交的重要性。特别是如果你是一个开源的贡献者,那么很多时候,你必须用压扁的提交创建一个PR(拉动请求)。如果你已经创建了一个PR,你也可以Squash提交。

让我们了解一下如何Squash提交?

Git Squash 提交

作为一个负责任的 Git 贡献者,有必要让协作过程变得高效而有意义。Git允许一些强大的协作工具以不同的方式进行协作。Git squash就是其中一个强大的工具,它能促进高效且不那么痛苦的协作。

squash不是任何命令;相反,它是在git交互式rebases下提供给你的许多选项之一。压扁允许我们重写历史。假设我们在项目工作中做了很多提交,把所有的提交压成一个大的提交是比推送正确的选择。让我们来了解如何压扁两个提交。

步骤1:检查提交历史

要检查提交历史,请运行以下命令。

$ git log --oneline

给出的命令将在一行中显示历史。我们可以追踪历史,选择我们想Squash的提交。请看下面的输出。

Git Squash

步骤2:选择要Squash的提交

假设我们想Squash最后的提交。要Squash提交,请运行下面的命令。

$ git rebase -i HEAD ~3

上述命令将打开你的默认文本编辑器,并将Squash最后三次提交。编辑器的打开方式如下。

Git Squash

从上图中,我们可以看到编辑器的顶部显示了之前的提交。如果我们想把它们合并成一个提交,那么我们必须把编辑器顶部的pick这个词替换成squash。要在编辑器上写作,按’i’键进入插入模式。编辑完文件后,按:wq键保存并退出编辑器。

步骤三:更新提交

按下回车键后,会打开一个新的文本编辑器窗口来确认提交。我们可以在这个屏幕上编辑提交信息。

我正在编辑我的第一个提交信息,因为它将是所有三个提交的组合。请看下面的图片。

Git Squash

上图是确认提交合并的编辑界面。在这里我们可以更新提交信息。要在这个编辑器上进行编辑,按i键为插入模式,编辑所需的文本。按:wq键,保存并退出编辑器。

当我们退出编辑器时,它将显示更新的描述。考虑一下下面的输出。

Git Squash

上面的输出列出了在版本库上所做的修改的描述。现在,这些提交已经被Squash了。在 git 日志的帮助下,检查提交历史以确认。考虑一下下面的输出。

Git Squash

步骤4:推动压扁的提交

现在,我们可以把这个压扁的提交推送到远程服务器上。要推送这个压扁的提交,请执行下面的命令。

$ git push origin master

$ git push -f origin master

上面的命令会把修改推送到远程服务器上。我们可以在我们的远程版本库上检查这个提交。请看下面的图片。

Git Squash

从上面的图片可以看出。一个新的提交已经被添加到我的远程仓库。

Squashing 缺点

Squash没有明显的弊端。但我们可以考虑一些可能影响项目的事实。这些事实如下。

Squash提交和重新发布会改变版本库的历史。如果任何贡献者不注意更新的历史,那么就会产生冲突。我建议一个干净的历史,因为它比另一个历史更有价值。尽管我们可以在 ref log 中查看原始历史。

还有一个缺点,我们可能会因为压扁而失去颗粒度。在使用Git的过程中,要尽量减少压扁的次数。所以,如果你是Git的新手,那就尽量不要使用压扁法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程