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


如果您是 Git 开发者,您可能遇到过混乱的提交历史。将多个 Git 提交合并为一个(称为压缩的过程)可以帮助组织您的提交历史。在本教程中,我将向您展示如何将 Git 提交合并为单个、简洁、干净的提交。

为什么要合并 Git 提交?

合并或压缩多个 Git 提交具有多个优点
  1. 更清晰的历史记录:它有助于保持项目历史记录的整洁,将小的增量更改合并到单个提交中。
  2. 更轻松的协作:通过将所有相关的更改放在同一个提交下,简化了代码审查。
  3. 更好的可读性:它使跟踪功能或错误修复更改更容易。

合并 Git 提交的方法

在 Git 中压缩提交主要有两种方法

  1. 交互式变基(合并多个最近的提交的好方法)
  2. 软重置和重新提交(将所有提交合并为一个的理想方法)

让我们更详细地了解每种方法。

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

方法 1:使用 Git 交互式变基

Git 变基是一个强大的 Git 功能,允许您重新排序和压缩提交以及其他一些操作。在本教程中,我将向您展示如何使用交互式变基来合并您最近的提交。

交互式变基 - 分步指南

1. 确定要压缩的提交范围:找出要合并多少个提交。假设您进行了三个提交,并且想要将它们压缩为一个。如果您需要将最新的提交之前的三个提交进行变基,那么您将这样做。
2. 开始交互式变基:只需使用N(N 为要合并的提交数)运行您的命令。

git rebase -i HEAD~N

例如,如果您想压缩最后三个提交,请键入:

git rebase -i HEAD~3

3. 编辑变基文件:然后,您运行rebase命令,并打开一个编辑器,其中列出了您的最近提交。每个提交前面都带有单词 pick。
4. 选择要压缩的提交:在所有要与最顶部提交合并的提交上,将单词pick更改为squash(或s)。首先,在第一个提交行上保留 pick,并将其余的更改为 squash。例如,

pick Initial commit messagesquash Second commit messagesquash Third commit message

5. 保存并关闭编辑器:编辑后,保存并关闭编辑器。您的提交现在将在 Git 中合并。
6. 编辑合并的提交消息:合并的提交消息将在您的编辑器中打开,Git 将要求您进行编辑。如果需要,您可以保留各个提交消息,也可以编写新的消息。完成后,保存并关闭编辑器。
7. 完成变基:Git 现在将选定的提交压缩为一个。要验证,请使用以下命令:

git log

您应该看到单个提交代替以前的提交。

方法 2:使用 Git 软重置和重新提交。

如果您希望将所有更改压缩到一个提交中,此方法更快。

软重置 - 分步指南

1. 确定要包含的第一个提交:在所有提交中,确定要作为起始点的提交。假设您希望压缩第一个提交之后的所有内容。
2. 将软重置到目标提交:使用--soft和所需提交的哈希值作为基准的git reset命令。

git reset --soft <commit_hash>

``替换为特定提交的哈希值。
3. 创建新的提交:一次性暂存所有更改并提交它们。

git commit -m "Your combined commit message"

4. 验证提交:要确保您的更改仅属于一个提交,请运行git log

关于压缩提交的重要说明

  • 本地分支与远程分支:本地分支可以安全地进行压缩。为此,您可能被迫强制推送 (git push -f),这可能会破坏协作者的工作。如果您正在处理共享分支,请务必与您的团队协调。
  • 撤消压缩:使用git reflog,如果意外压缩提交,您可以将分支重置到较早的状态。

合并拉取请求之前的压缩提交

大多数团队喜欢在合并拉取请求之前压缩提交,以获得更清晰的项目历史记录。在 GitHub 或其他代码托管站点上,您可以选择“压缩并合并”;它将您的拉取请求提交压缩为一个并将其合并到主分支。

结论

将一堆提交合并为一个是非常实用的操作,可以创建干净易读的提交历史记录。掌握git rebasegit reset允许您压缩提交,使您的贡献更易于跟踪和协作。

更新于:2024年11月4日

38 次查看

启动您的职业生涯

通过完成课程获得认证

开始学习
广告