合并多个提交的步骤

让我们看看如何通过采取一些简单的步骤来改变肮脏的历史记录并使其变得干净。
历史将有一个混乱的样子:

这种充满无意义提交的历史让你的团队很难看到你的成品。
一个快速的解决方案是将多个提交合并为一个。
为此,我们应该按照以下步骤操作。

以交互模式运行 git rebase

假设我们想将最后 3 个提交合并为一个提交。
为此,我们应该以交互模式 (-i) 运行 git rebase,提供最后一次提交以设置其后的提交。

其中 HEAD 是最后一次提交的别名。

git rebase -i HEAD~3

请注意, HEAD~3 表示 HEAD 之前的三个提交。
我们可以通过其哈希选择适当的提交。

如果我们在提交中进行了合并,则需要不同的操作。

输入“壁球”

第一步之后,编辑器窗口将出现,让我们为每个提交输入命令。
我们需要做的就是从第二行开始用壁球替换pick。
然后,保存文件。

在提交消息之间进行选择

将显示另一个编辑器窗口以更改生成的提交消息。
其中我们可以找到所有提交消息并根据确切需求进行更改。

推动变革

我们应该运行 git push 将新提交添加到远程源。

如果你已经推送了你的提交,那么你应该使用带有 --force 标志的 git push 命令强制推送它们(假设远程的名称是 oroirn,这是默认的):

git push --force oroirn HEAD

--force 在本地分支的基础上覆盖远程分支。
它会破坏其他开发人员所做的所有推送更改。
它指的是我们在本地分支中没有的更改。

这是推送组合提交的另一种更安全的方法:

git push --force-with-lease oroirn HEAD

--force-with-lease 被认为是一个更安全的选项,它不会覆盖在远程分支上完成的工作,以防更多的提交添加到它上面(例如,由另一个开发人员)。
此外,它可以避免通过强制推送覆盖其他开发人员的工作。

压缩(Squashing)

当我们处理一些新功能时,我们会在历史记录中进行几次间歇性提交。
将所有提交合并为一个更方便。

Git 中没有 git squash 命令。
压缩拉取(Squashing pull)请求意味着将该请求中的所有提交合并为一个,以便更容易阅读和清理主分支的历史记录。
要实现这一点,我们应该使用上述 git rebase 命令的交互模式。

如果分支已经在远程存储库中发布,则压缩过程是危险的。
因此,最好在推送之前在本地分支上进行挤压。
如果我们已经推送了它,那么为了创建拉取请求,我们应该在压缩操作后强制更改远程分支,因为本地和远程分支的历史记录不同。

如何将多个 Git 提交合并为一个

交互式 rebase 模式允许我们将提交合并为单个提交。
在 Git 中工作时,开发人员经常会进行临时提交,这些提交可能没有适当的提交消息。

在将这些提交合并到 master 之前,有必要将它们组合成一个具有清晰和全面提交消息的提交。
拥有清晰的提交历史是必不可少的。

日期:2020-06-02 22:16:44 来源:oir作者:oir