在 Git 中,执行 git merge
时可以通过一些操作来“压缩”提交,通常是指将合并过程中的多个提交压缩成一个单一的提交。这可以通过使用 --squash
选项来完成,或者在合并后进行交互式 rebase。以下是两种常见的方法:
方法 1:使用 git merge --squash
当你执行 git merge --squash
时,Git 会将所有来自另一个分支的提交合并为一个暂存的更改,但并不会立即创建一个新的提交。你可以手动创建一个合并提交,这样就相当于“压缩”了所有更改。
-
首先,确保你处于目标分支(例如
master
):git checkout master
-
执行
merge --squash
来将另一个分支的更改合并到当前分支:git merge --squash feature-branch
-
Git 会将
feature-branch
分支上的更改压缩到暂存区,你需要手动提交:git commit -m "Squashed commit from feature-branch"
这样,feature-branch
上的所有提交会被合并为一个提交。
方法 2:使用交互式 rebase 压缩提交
如果你已经进行了合并,或者想在合并之后对提交进行压缩,可以使用 git rebase -i
来执行交互式 rebase,压缩多个提交为一个。
-
找到你要压缩的提交范围,通常你会想从合并分支的基础提交开始。假设你要压缩的是
feature-branch
中的所有提交,可以首先查看提交日志:git log --oneline
-
使用交互式 rebase 来选择你要压缩的提交:
git rebase -i <commit-hash>^
这里的
<commit-hash>
是你想压缩的第一个提交的父提交。 -
在打开的交互式 rebase 编辑器中,将你希望压缩的提交(除了第一个提交)前面的
pick
改为squash
或简写为s
,然后保存并退出编辑器。 -
Git 会提示你编辑合并提交的信息,你可以修改提交信息并完成 rebase。
总结
- 使用
git merge --squash
合并时可以将多个提交压缩成一个提交。 - 使用交互式
rebase
可以在合并后对提交进行压缩。
这两种方法都可以有效地“压缩”合并过程中的提交。