如何使用 git rebase 来合并多个 commit

在日常开发中,我们经常会在一个 feature 分支上进行多次提交(commit)。有时候,为了保持提交历史的整洁,我们需要将多个 commit 合并成一个。这篇博客将介绍如何使用 git rebase 来合并多个 commit,并以 main 分支为基础进行操作。

前提条件

假设你已经在一个名为 feature-branch 的分支上进行了多次提交,现在你想要基于 main 分支进行 rebase,并合并这些 commit。

步骤一:切换到你的 feature 分支

首先,确保你在你的 feature 分支上:

1
git checkout feature-branch

步骤二:确保 main 分支是最新的

切换到 main 分支并拉取最新的更改:

1
2
git checkout main
git pull origin main

步骤三:切换回你的 feature 分支

切换回你的 feature 分支:

1
git checkout feature-branch

步骤四:基于 main 分支进行交互式 rebase

使用以下命令开始基于 main 分支的交互式 rebase:

1
git rebase -i main

这会打开一个交互式编辑器,显示从 main 分支以来的所有 commit。

步骤五:编辑提交历史

在编辑器中,你会看到类似以下的内容:

1
2
3
pick abc1234 Commit message 1
pick def5678 Commit message 2
pick ghi9012 Commit message 3

将你想要合并的 commit 前的 pick 改为 squashs,例如:

1
2
3
pick abc1234 Commit message 1
squash def5678 Commit message 2
squash ghi9012 Commit message 3

这表示将 def5678ghi9012 合并到 abc1234

步骤六:保存并退出编辑器

保存文件并退出编辑器(在 Vim 中,按 Esc,然后输入 :wq 并回车)。

步骤七:编辑合并后的提交信息

你会再次进入编辑器,这次是让你编辑合并后的提交信息。你可以修改或合并这些信息,然后保存并退出。

步骤八:完成 rebase

完成后,Git 会重新应用这些 commit,并将它们合并成一个。

步骤九:解决冲突(如果有)

如果在 rebase 过程中遇到冲突,Git 会提示你解决冲突。解决冲突后,使用以下命令继续 rebase:

1
2
git add <resolved-files>
git rebase --continue

步骤十:推送更改

如果你的 feature 分支已经推送到远程仓库,你需要强制推送:

1
git push origin feature-branch --force

请注意,强制推送可能会影响其他开发者,所以请谨慎操作。

总结

通过以上步骤,你就成功地基于 main 分支进行了 rebase,并合并了多个 commit。这个过程确保了你的 feature 分支包含 main 分支的最新更改,并且你的 commit 历史保持整洁。

本文作者:
本文链接: https://hgnulb.github.io/blog/2024/77934865
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!