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后才会推到远端。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐