在 Git 中,合并多个提交通常有以下几种方法:
1. 使用 git rebase
合并多个提交
git rebase
是一种非常常用的方法,能够合并历史提交,保持提交历史的整洁。
步骤如下:
-
确认你在要操作的分支上:
git checkout your-branch
- 使用
git rebase -i
进入交互式的 rebase 模式:git rebase -i HEAD~n
其中
n
是你要合并的提交数量 -
编辑 rebase 界面,在要合并的提交的前面将
pick
改为squash
或s
。squash
会将提交合并并且保留提交消息,而fixup
则直接合并且丢弃提交消息。 -
保存并关闭编辑器。接下来 Git 会要求你编辑合并后的提交信息。
-
最后,完成 rebase:
git rebase --continue
2. 使用 git reset
合并提交
这个方法通过软重置提交,然后重新提交达到合并多个提交的效果。
步骤如下:
-
确认你在要操作的分支上:
git checkout your-branch
- 软重置到想要合并提交之前的状态:
git reset --soft HEAD~n
其中
n
是你想要合并的提交数。 - 重新提交:
git commit -m "Your new commit message"
3. 使用 git merge --squash
合并多个提交
如果你从一个分支中合并多个提交到当前分支,可以使用 git merge --squash
。
步骤如下:
-
确认你在目标分支上:
git checkout target-branch
- 合并源分支:
git merge --squash feature-branch
- 提交合并结果:
git commit -m "Your merge commit message"
总结
git rebase -i
适用于合并历史提交并保持提交历史整洁。git reset --soft
适用于本地还未推送的提交合并。git merge --squash
适用于合并整个分支时压缩提交。