菜鸟笔记
提升您的技术认知

git使用rebase命令合并多次(未提交)commit

查看提交历史

使用 git log 命令查看提交历史:

使用rebase命令

想要合并前三个 commit ,使用下面的命令:

git rebase -i HEAD~3

进入编辑界面,把要保留的 commit 使用pick,其他的使用squash命令,或者根据命令提示选择自己想用的命令。

对于 commit 合并可以使用 squash、fixup 指令,区别是 squash 会将该 commit 的注释添加到上一个 commit 注释中,fixup 是放弃当前 commit 的注释。

保存退出,git会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:

git add .
git rebase --continue

如果你想放弃这次压缩的话,执行以下命令:

git rebase --abort

如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口,此时就可以写合并之后commit的信息了。

将信息修改后保存退出,可以看到成功的命令。

通过 git log 命令,可以看到 commit 已经成功合并成了一个。

最后是git push -f

删除某次 commit 
 

同样的,利用 git 压缩 rebase 指令来删除某个 commit,过程和以上是类似的;

在 git log 下,假如我们需要删除“请假应用客户端代码优化”这个 commit:

可以通过 git rebase -i HEAD~1 (对最近1次 commit 进行 rebase) 或 git rebase -i 9fbf10(对 commit id 前几位为 9fbf10 的 commit 之后的 commit 进行 rebase);

 将需要删除的 commit 设置操作指令 drop ,保存退出即可;

 在执行 git log 时,可以发现该条 commit 已经从提交历史中删除了;

提示:

如果提交之前有别人提交的代码没有同步下来,可以先同步拉取下来看看是否冲突后再提交

git pull -r origin develop

然后可以临时建立temp分支,查看下log,查看自己当前的提交是不是在最前面

git fetch origin develop:temp

gitk temp -100

如果没有问题,删除这个临时分支即可

git branch -d temp