📜  Git – 壁球

📅  最后修改于: 2022-05-13 01:58:11.162000             🧑  作者: Mango

Git – 壁球

假设您正在使用 Git 作为版本控制来构建项目。你发布了第 1 版,之后你想为第 2 版添加新功能,甚至修复了第 1 版中发现的一些错误。在第 1 版发布后,你有大量的提交堆积如山。有没有办法将第一次发布后的所有提交合并为一个提交?是的,可以使用壁球。

Squash 是 git rebase 命令的交互模式中可用的有用且强大的功能之一。

Git 壁球

现在我们有一个名为 GFG_VIDEO 的存储库,它是一个开源视频会议工具。 GFG_VIDEO 发布了他们工具的第一个版本,具有基本功能,例如点对点视频通话和带有标签 R_V1(绿色)的消息。在 R_V1 发布团队之后,GFG_VIDEO 开始添加新功能,例如创建群组、群组视频通话,以及修复 R_V1 中的小错误(例如掉线等)。现在 GFG_VIDEO 已准备好迎接他们的新版本 R_V2。如果您观察到,我们从初始提交到 R_V1(第一个版本)有 3 次提交。在我们的 R_V1 之后,我们为 R_V2(第 2 版)提交了 3 次提交,看起来有点凌乱且难以理解。在这里,我们可以使用 Squash 概念并将 R_V1 到 R_V2 之后的所有提交合并为一个提交,这使我们的存储库日志更加整洁和易于遵循。

Git Squash - 初始提交

实施:专注于壁球命令。

发布 R_V1 后的 GFG_VIDEO 提交日志

上图显示我们有 3 个提交:初始提交、提交 2、版本 1 发布。我们已经成功发布了 GFG_VIDEO 工具的第一版 (R_V1)。在 R_V1 添加了新功能并修复了先前版本的小错误之后,该工具已准备好用于其第二版 R_V2。

发布 R_V2 后的 GFG_VIDEO 提交日志

GFG_VIDEO 日志的上图是在第二版发布之后。可以观察到在第 1 版发布(标签:R_V1)之后,第 2 版发布有 3 次提交。这种看起来不整洁,为了更容易阅读,我们可以做一个 squash 操作。

让我们现在进行壁球

git rebase -i HEAD~3 

输入上述命令后,我们将获得一个交互式编辑器,其中包含我们选择的所有提交,我们将在其中执行 squash。

输入变基命令时的交互式编辑器

我们可以看到我们在交互式编辑器的开头选择了 3 个提交,在下面我们可以看到命令列表,例如 pick、reword、edit、squash 等。

任务:用第一次提交压缩第二次和第三次提交,所以我们将把第一个单词从 pick 更改为 squash。

whichever commits we want to squash we have to change it to squash from pick

从挑选改为壁球

将提交从 pick 更改为 squash 保存文件并关闭它后,将立即打开另一个编辑器,我们必须在其中输入最新的提交消息。

用于输入新提交消息的交互式编辑器

输入最新的提交消息并评论剩余的旧消息。

添加了最新的提交消息

添加最新的提交消息后,保存文件并退出文件。现在它显示变基是成功的。

成功留言

现在,如果我们看到 GFG_VIDEO 日志,我们可以观察到版本 1 发布后的 3 个提交被压缩为 1 个提交。

壁球操作完成