合并多个commit
文件少的话可以先: git reset --soft
然后重新 git commit
, 这样又简单又好理解。
rebase -i
合并比较麻烦,利用 rebase 做分支之间的变基会比较好;
下面还是介绍一下rebase的用法:
查看版本历史
执行git rebase变基
-i
实际上就是 --interactive
的简写,在使用 git rebase -i
时,我们要在后面再添加一个参数,这个参数应该是 最新的一个想保留的 Commit。这句话读起来有点坳口,所以这个情况下通常需要举个例子。就我们前面提到的那个例子中,这个「最新的一个想保留的 Commit」就是 5d39ff2(Commit-0)
,于是我们的命令看起来就长这样:
请注意5d39ff2这个版本是不参与合并的,可以把它当做一个坐标
选择要合并的commit
上一步操作按下回车键后会出现
前面三行是我们需要操作的三个 Commit,每行最前面的是对该 Commit 操作的 Command。关于每个 Command 具体做什么,下面的注释写得非常清楚。为了完成我们的需求,我们可以关注到这两个命令:
squash
:使用该 Commit,但会被合并到前一个 Commit 当中fixup
:就像squash
那样,但会抛弃这个 Commit 的 Commit message
由于我们是想把三个 Commit 都合并在一起,并且使 Commit Message 写成 Commit-1,所以我们需要把 5756e15(Commit-2) 和 b1b8189(Commit-3) 前面的 pick 都改为squash,于是它看起来像这样:
也可以用缩写
保存继续
上一步操作完保存退出后,Git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:
如果要放弃的话,则使用
push
推荐使用
最后更新于
这有帮助吗?