前言:
个人记录学习笔记用
问题概述:
当时同一版本中,多人在同一分支上共同开发。提交commit时发生冲突。在解决了冲突后再次ga .
后使用git --rebase continue
没有反应,脑袋一抽就使用了git --rebase skip
,于是辛苦写了两个小时的代码没有了。。。
解决:
1.git reflog操作,查看提交的历史记录,找到自己的提交
2.强制回退到上一次提交:git reset --hard 791a1fc 或者 git reset --hard HEAD@{2} (HEAD@{2} git reflog显示在分支前面的 数字表示往前退几个)
3.再一次rebase,如果有冲突,就解决冲突,
4.进行git add -a 以及git rebase --continue
补充:
git rebase冲突解决:
(http://www.cnblogs.com/chenjunjie12321/p/6876220.html)
1、使用 $git rebase --abort
执行之后,本地内容会回到提交之间的状态,也就是回到以前提交但没有pull是的状态,简单来说就是撤销rebase。
2、使用 $git rebase --skip
git rebase --skip 引起冲突的commits会被丢弃,开发者对文件的commit无效,自己修改的部分全部无效,因此,在使用skip时请慎重。
3、使用 $git rebase --continue
执行完$git pull --rebase 之后,本地如果产生冲突,手动解决冲突之后,用"git add"命令去更新这些内容的索引(index),然后只要执行:
$ git rebase --continue 就可以线性的连接本地分支与远程分支,无误之后就回退出,回到主分支上。
注意:一般情况下,修改后检查没问题,使用rebase continue来合并冲突。
git log与git flog的区别:
git log可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作
git reflog是显示所有的操作记录,包括提交,回退的操作。一般用来找出操作记录中的版本号,进行回退。
git reflog常用于恢复本地的错误操作。