使用 git log 命令查看提交历史:
想要合并前三个 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