Git 合并提交



Git 合并提交 是一种 Git 技术,它将多个提交合并成一个统一的提交。

通过将多个连续的提交合并到单个基础提交中,此过程简化了提交历史记录,并使项目历史记录更易于阅读和理解。

  • Git 合并提交通常与交互式变基一起使用,开发人员可以选择要合并哪些贡献。它不是一个独立的工具。

  • 使用此技术,可以确保具有大量增量提交的功能分支仅显示经过完善的合并提交。

  • 在提交拉取请求之前合并提交,通过保持历史记录更有条理和清晰,有助于改进审查和协作。

使用以下命令来保持仓库结构化并将多个更改合并到一个中

git merge --squash bugfix-issue-123

此方法在当前分支上创建一个单个提交,其中包含来自 bugfix-issue-123 的所有提交。

Git 中的合并提交

通过将多个贡献合并到单个提交中,借助git 合并提交可以清理和组织 Git 历史记录。

  • 合并提交主要关注将相关的提交合并到单个内聚提交中,这与可能涉及多个更改的普通合并不同。

  • 这对于组织项目历史记录并使提交更容易理解非常有帮助。

何时合并提交

以下几点将帮助我们决定何时合并提交

  • 合并功能分支:在将功能分支合并到主分支之前,可以将其多个提交压缩成一个提交。

    此过程有助于为我们的项目提供一套集成且易于理解的历史发展。

  • 准备拉取请求:在提交拉取请求 (PR) 之前,合并提交可以确保只包含最重要的更改。

    因此,审阅者将更容易理解调整的目标和范围。

  • 清理提交历史:将多个小的或增量的提交合并成较少的、较大的提交可以使提交历史记录更易于阅读和导航。

如何合并提交?

Git 提供了几种将多个提交合并到一个中的方法

  • 在 Git 合并期间合并提交。

  • 使用交互式 Git 变基合并提交。

  • 通过拉取请求合并提交。

  • 使用 Git reset 合并提交。

在 Git 合并期间合并提交

一种简单的方法是使用带有--squash标志的git merge将功能分支中的多个提交合并到当前分支上的单个提交中。

此方法有助于保持清晰易懂的提交历史记录。

使用 git merge 合并提交的步骤

检出目标分支:切换到要集成更改的分支

git checkout <target_branch>

合并并压缩:使用以下命令将源分支的提交压缩到单个提交中:

git merge --squash <source_branch>

这无需实际合并提交或修改 HEAD,即可准备进行单个提交的修改。

解决冲突:如果出现冲突,请在工作目录中手动解决。

提交压缩的更改:创建一个带有消息的单个提交

git commit -m "<your_commit_message>"

推送更改:将更改推送到远程仓库。

为确保不会覆盖其他人的更改,请使用--force-with-lease

git push --force-with-lease

使用交互式 Git 变基合并提交

使用交互式变基合并提交的步骤

检出分支:切换到包含要压缩的提交的分支

git checkout <branch_name>

确定提交数量:查看提交历史记录并计算分支上的提交数量

git log --graph --oneline --all

启动交互式变基:应该为适当数量的提交启动交互式变基。

将 <number_of_commits> 替换为上一步中的计数。例如,要压缩最后两个提交

git rebase -i HEAD~2

选择变基操作:在打开的文本编辑器中,我们将看到一个提交列表。

可以使用一个操作 (pick、squash 等) 来指示每个提交。

要压缩提交,请将要与它们上方的提交合并的提交的pick更改为squash

保存并退出:保存编辑,然后关闭文本编辑器。Git 将根据我们的指示执行变基。

编辑提交消息:我们将能够使用不同的文本编辑器为压缩的提交编写提交消息。

我们可以更改预先编写的消息或编写全新的消息。完成后,保存并关闭。

推送更改:变基完成后,将更新的文件推送到远程仓库。

使用--force-with-lease可防止覆盖其他人的更改

git push --force-with-lease

通过 GitHub 上的拉取请求合并提交

在 GitHub 等平台上生成拉取请求时,有一种简单的方法可以合并提交。

借助此功能,用户可以通过在合并过程中将多个提交合并到单个提交中来维护清晰的提交历史记录。

使用拉取请求合并提交的步骤

  • 导航到 GitHub:打开网络浏览器并转到 GitHub。

  • 登录:登录 GitHub 帐户并找到仓库。

  • 创建拉取请求:转到仓库中的拉取请求选项卡。点击新建拉取请求按钮。

  • 选择压缩并合并:在拉取请求准备就绪后,点击创建合并提交下拉菜单,然后选择压缩并合并

  • 添加评论:为压缩的提交编写评论,然后点击相应的按钮完成合并过程。

使用 git reset 合并提交

使用 git reset 合并提交的步骤

使用软重置:执行软重置以将 HEAD 移动到我们想要压缩的提交之前的状态。

这不会更改索引或工作目录,从而保持更改不变。

要压缩给定数量的提交,请执行以下命令

git reset --soft HEAD~<number_of_commits> && git commit

将我们想要压缩的提交数量放在 <number_of_commits> 的位置。

创建新的提交:git reset --soft命令将分支恢复到指定提交的状态,同时保留暂存区中的所有更改。

当我们运行git commit时,默认文本编辑器将打开,其中包含来自压缩提交的合并提交消息。

我们可以编辑或添加新的提交消息以用于单个合并提交。

保存并退出编辑器以完成此过程。

合并提交的优点

以下是合并提交的优点

  • 简化代码审查:一次检查一个大型提交比排序多个较小的提交花费的时间更少。这使得审阅者更容易一次看到所有更改。

  • 减少仓库混乱:当多个提交合并成一个时,提交历史记录将包含较少的条目,这将最大限度地减少混乱并使其看起来更清晰。

  • 简化回滚:回滚单个提交通常比回滚多个较小的提交更容易管理更改。

  • 简化合并:减少提交历史记录会导致更少的合并冲突。在分支合并之前反转提交可以简化集成过程。

广告