Git squash

本文概述

  • Git squash 提交
  • squash 的缺点
在Git中, 术语squash用于将先前的提交压缩为一个。这不是命令;相反, 它是一个关键字。 squash 是将特定组的更改转发给他人之前的一项出色技术。你可以使用引人注目的交互式rebase命令将多个提交合并到单个提交中。
如果你是Git用户, 那么你必须已经意识到挤压提交的重要性。尤其是如果你是开源贡献者, 那么很多时候, 你必须创建带有压缩提交的PR(拉请求)。如果你已经创建了PR, 则也可以压缩提交。
让我们了解如何压缩提交?
Git squash 提交 作为Git的负责人, 有必要使协作过程高效且有意义。 Git以不同的方式提供了一些强大的协作工具。 Git squash 是促进高效且减轻痛苦协作的强大工具之一。
南瓜不是任何命令。相反, 它是git交互式rebase下可供你使用的众多选项之一。 squash 允许我们重写历史记录。假设我们在项目工作期间进行了许多提交, 将所有提交压缩为大提交比推送是正确的选择。让我们了解如何压缩两个提交。
步骤1:检查提交历史记录
要检查提交历史记录, 请运行以下命令:
$ git log --oneline

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

文章图片
步骤2:选择要压缩的提交。
假设我们要压缩最后的提交。要压缩提交, 请运行以下命令:
$ git rebase -i HEAD ~3

上面的命令将打开你的默认文本编辑器, 并将压缩最后三个提交。编辑器将打开, 如下所示:
Git squash

文章图片
从上面的图像中, 我们可以看到先前的提交显示在编辑器的顶部。如果我们想将它们合并为一个提交, 则必须在编辑器顶部用南瓜替换pick。要在编辑器上书写, 请按“ i”按钮进入插入模式。编辑文档后, 按:wq保存并退出编辑器。
步骤3:更新提交
按下回车键后, 将打开文本编辑器的新窗口以确认提交。我们可以在此屏幕上编辑提交消息。
我正在编辑我的第一条提交消息, 因为它将是所有三个提交的组合。考虑下图:
Git squash

文章图片
上面的图像是用于确认提交合并的编辑器屏幕。在这里, 我们可以更新提交消息。要在此编辑器上进行编辑, 请按“ i”按钮进入插入模式并编辑所需的文本。按:wq键, 保存并退出编辑器。
【Git squash】当我们退出编辑器时, 它将显示更新的描述。考虑以下输出:
Git squash

文章图片
上面的输出列出了对存储库所做的更改的描述。现在, 提交已被压缩。在git日志的帮助下检查提交历史以进行确认。考虑以下输出:
Git squash

文章图片
步骤4:推送压缩的提交
现在, 我们可以将此压缩的提交推送到远程服务器上。要推送此压缩的提交, 请运行以下命令:
$ git push origin master

要么
$ git push -f origin master

上面的命令将把更改推送到远程服务器上。我们可以在远程存储库中检查此提交。考虑下图:
Git squash

文章图片
从上图可以看到。新的提交已添加到我的远程存储库。
squash 的缺点 压榨没有明显的缺点。但是我们可以考虑一些可能影响项目的事实。这些事实如下:
挤压提交并重新设置基础将更改存储库的历史记录。如果任何贡献者不注意更新的历史记录, 则可能会产生冲突。我建议你提供干净的历史记录, 因为它比另一个更有价值。尽管我们可以在参考日志中检查原始历史记录。
还有另一个缺点, 由于挤压, 我们可能会失去粒度。使用Git时, 尽量减少南瓜。因此, 如果你不熟悉Git, 请尝试远离 squash 。

    推荐阅读