乐闻世界logo
搜索文章和话题
Git 如何合并多个 Commit 提交

Git 如何合并多个 Commit 提交

乐闻的头像
乐闻

2024年04月10日 12:31· 阅读 564

前言

当你在开发软件时,频繁的提交(commit)能帮你更好地追踪代码变化。然而,当一系列小的改动造成了大量的提交记录,合并(squash)这些提交能让历史更加清晰易读。

在 Git 中,我们可以通过交互式 rebase 来实现这一点。现在,我会带你用一种简单易懂的方式,一步步地学会如何合并多个 commit。

Rebase 交互式操作

交互式 rebase 是 Git 的一个强大功能,它允许你重写历史—即重写连续的提交序列。你可以用它来修改提交的顺序,改变提交信息,甚至合并提交。

实现步骤

一、启动 Rebase 交互式模式

要开始合并提交,首先打开你的终端(Terminal),然后切换到你的项目目录下。为了展示这个过程,我们首先查看当前的提交历史:

sh
git log --oneline

你会看到类似这样的输出:

plaintext
a1b2c3d 最新的改动 e4f5g6h 一些小的改动 i7j8k9l 又一些小的改动 ...

现在我们开始交互式 rebase。如果你想合并最近的三个提交,你可以这样做:

sh
git rebase -i HEAD~3

二、选择要合并的 Commit

运行上面的命令后,你的默认文本编辑器会打开一个带有提交列表的文件,每个提交前都有 pick 字样。它看起来可能类似于这样:

plaintext
pick e4f5g6h 一些小的改动 pick i7j8k9l 又一些小的改动 pick a1b2c3d 最新的改动

要合并这些提交,你需要把除了第一个提交之外的所有 pick 改成 squash 或简写 s。这表示你想将这些提交合并到前一个提交中。

plaintext
pick e4f5g6h 一些小的改动 squash i7j8k9l 又一些小的改动 squash a1b2c3d 最新的改动

三、合并 Commit

保存并关闭编辑器后,Git 会开始合并提交。如果合并的提交有各自不同的提交信息,Git 会让你编辑一个新的提交信息来替代这些被合并的提交信息。

编辑器会展示所有原始的提交信息,并让你编辑。你可以完全自定义这个新的提交信息,通常是一个总结性的信息。完成后保存并关闭编辑器。

四、确认合并后的历史

一旦完成上述步骤,你可以通过以下命令检查新的提交历史:

sh
git log --oneline

你应该会看到一个新的提交代替了之前的三个提交。

五、推送到远程仓库

如果你之前的提交已经推送到了远程仓库,你需要用 force push 来覆盖远程仓库中的历史:

sh
git push origin <branch-name> --force

⚠️ 注意:强制推送会重写远程仓库的历史,这在团队协作中可能会有问题。确保你的团队成员了解你的变更,避免工作冲突。

总结

这是一个强大的特性,能够帮助你维护一个干净、有条理的提交历史。使用这些技巧,你可以提高你的代码库的整洁性和可读性,也可以在需要的时候更容易地回溯和理解历史改动。但是,务必谨慎地使用交互式 rebase 和 force push,特别是在多人协作的项目中,因为这会重写历史,可能会影响到其他人的工作。

标签: