2019年11月6日

git rebase –skip

作者 admin

问题出现:

今天pull代码,在此之前本地做了一次提交,但是没有push到服务器上去,git rebase upstream/dev 后发现报了一个git 错误,文件冲突了,于是执行了命令git rebase –skip。

现象:

git rebase –skip后发现上次的commit 提交记录不存在了

解决过程:

将问题解剖开先思考,rebase 的过程是怎样的?

我们知道rebase 的过程首先会产生 rebase 分支(master)的备份,放到(no branch )临时分支
中通常是随机的字符与实数组合产生的。再将支线分支(branch)的每一次提交修改,以补丁的形
式,一个个的重新应用到主干分支上。
这个过程是一个循环应用补丁的过程,期间只要补丁产生冲突,就会停止循环,等待手动解决冲突。
这个冲突指的是上一个合并后版本与补丁之间的冲突。
git rebase –skip 命令,可以跳过某一次补丁(存在上一轮冲突的解决方案中,已经包含了这一轮的补
丁内容,这样会使补丁无效,需要跳过)
遇到冲突后  git rebase —continue
开始拆解代码,解决后开始编辑 ,如果提交不上去 就直接 git rebase –skip
来完全忽略该提交。这样,有问题的提交所引入的变化就不会被添加到历史中。
然后开始推代码就可以了,
想撤销这个操作怎么办,还想要上次commit 的操作?
  • 使用git reflog命令找回丢失的commit 信息
  • git checkout -b recovery 5aw24s2 ,这个回到commit时的样子了
  • git checkout master,git merge recovery,再merge回主分支就可以了