如何将多个 Git 提交合并为一个
如果您是 Git 开发者,您可能遇到过混乱的提交历史。将多个 Git 提交合并为一个(称为压缩的过程)可以帮助组织您的提交历史。在本教程中,我将向您展示如何将 Git 提交合并为单个、简洁、干净的提交。
为什么要合并 Git 提交?
合并或压缩多个 Git 提交具有多个优点- 更清晰的历史记录:它有助于保持项目历史记录的整洁,将小的增量更改合并到单个提交中。
- 更轻松的协作:通过将所有相关的更改放在同一个提交下,简化了代码审查。
- 更好的可读性:它使跟踪功能或错误修复更改更容易。
合并 Git 提交的方法
在 Git 中压缩提交主要有两种方法- 交互式变基(合并多个最近的提交的好方法)
- 软重置和重新提交(将所有提交合并为一个的理想方法)
让我们更详细地了解每种方法。
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 rebase和git reset允许您压缩提交,使您的贡献更易于跟踪和协作。