Git Squash命令

Git Squash命令

In Git,术语Squash用于将先前的commit合并成一个。它不是一个命令,而是一个关键词。Squash是一种在将更改转发给他人之前对特定组的更改进行整合的优秀技术。您可以使用强大的交互式变基命令将多个commit合并为一个单独的commit。

如果您是Git用户,那么您一定意识到了压缩commit的重要性。特别是如果您是一个开源贡献者,许多时候您必须创建一个包含压缩commit的PR(拉取请求)。如果您已经创建了PR,也可以压缩commit。

让我们了解如何压缩commit?

Git Squash Commits

作为Git的负责任的贡献者,使协作过程高效而有意义是必要的。Git以不同的方式提供了一些强大的协作工具。Git squash是其中一个有助于高效和较少痛苦协作的强大工具。

Squash并不是一个命令,而是git交互式变基下可用的多个选项之一。压缩允许我们重写历史。假设我们在项目工作期间进行了许多commits,将所有commits压缩成一个大的commit比直接推送是正确的选择。让我们了解如何压缩两个commits。

第1步:检查commit历史

要检查commit历史,请运行以下命令:

$ git log --oneline

给定的命令将以一行显示历史记录。我们可以跟踪历史记录并选择要压缩的提交。请参考以下输出:

Git Squash命令

第2步:选择要合并的提交。

假设我们想要合并最后的提交。要合并提交,请执行以下命令:

$ git rebase -i HEAD ~3

上述命令将打开你的默认文本编辑器,并合并最后三次提交。编辑器将以以下形式打开:

Git Squash命令

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

第3步:更新提交

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

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

Git Squash命令

上面的图像是确认合并提交的编辑器屏幕。在这里我们可以更新提交信息。要在此编辑器上进行编辑,请按’ i ‘ 按钮进入插入模式并编辑所需的文本。按下 :wq 键以保存并退出编辑器。

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

Git Squash命令

上述输出列出了对存储库所做更改的描述。现在,提交已经合并。使用git log命令检查提交历史以确认。请参考以下输出:

Git Squash命令

第4步:推送压缩的提交

现在,我们可以将这个压缩的提交推送到远程服务器。要推送这个压缩的提交,请运行以下命令:

$ git push origin master

或者

$ git push -f origin master

上述命令将推送对远程服务器的更改。我们可以在远程存储库上检查此提交。请看下面的图片:
Git Squash命令

正如您从上面的图像中可以看到的那样,我的远程仓库中添加了一个新的提交。

压缩的缺点

压缩没有显著的缺点,但我们可以考虑一些可能会影响项目的事实,具体如下:

压缩提交和变基会改变仓库的历史。如果任何贡献者没有注意到更新的历史,可能会产生冲突。我建议使用清晰的历史,因为它比另一个更有价值。尽管我们可以在引用日志中查看原始历史。

还有一个缺点是,由于压缩,我们可能会失去细节。在使用Git时,尽量进行最小的压缩。所以,如果您对Git不熟悉,请尽量避免使用压缩。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程