Git ---游离状态下的commit 分支切换与找回
Git游离状态
什么是游离状态呢?
我不知道大家有没有遇到过commit后切换到别的分支,再想切回来的时候发现找不到刚刚提的verson了,因为你可能没注意到刚才提交的分支是哪个
举个可能遇见的例子:
你可能在公司用idea检出了以前的版本,回家后继续开发,并没有看到右下角显示的是git:ui123…asd0,而不是git:dev或git:master,然后提交,提交时发现并不是在dev,顺手切回dev打算合并,切到dev后发现找不到刚才的commit了
为什么找不到刚才提交的分支了呢?
你可能很绝望,但别害怕,只要提交过了,本地的git都会帮你记录下来,那为什么会找不到呢?因为Head没指向任何的分支,或者说指向了一个没有名字的分支,当你commit时会提示你是否创建新的分支,实际上分支名就是你的commit_id,但你拒绝了创建的请求,只是完成了提交,所以在所有分支中并没有你此次提交的分支
如何找回
那如何找回‘丢失’的代码?
第一种利用commit_id去新建分支,达到控制版本的目的:
$git branch callback commit_id
//commit_id的值可以查看终端的命令 根据不同情况执行不同的查询语句
1.上面commit_id为你提交时拿到的id,通过分支名去操作id
2. 切换回工作分支,并合并刚刚新建的分支
$git checkout dev
$git merge callback
$git push
3.最后删除掉之前创建的分支就好了
$git branch -d callback
第二种方法:
如果你用idea来写程序,提交也是在idea中进行的,可以这样查看:
1.在项目上右键—>local History —->show History
2.在弹出的框中左侧部分找到你提交到本地的verson记录 —> 根据右侧显示的那次verson所更改的文件判断是想要的版本—>右键Revert
总结
Git有完善的控制体系,即使不应用可视化程序,也能很好的控制版本问题,每一次提交都是对本地版本的一次保存,但不提交程序就真的没了,commit后保存在本地的库中,push后才会推到远端。
更多推荐
所有评论(0)