一个被终端坑的程序猿
前言
故事发生在端午节放假公司的人都走后。笔者一直在使用SVN,git少有了解,今天第一次尝试用终端进行git代码提交到码云,为了以防有问题,我还专门整个小demo试了下,很顺利,于是乎,我就进行我的代码提交。由于小demo的成功的原因,我没有对我的代码进行备份(鬼使神差的没有备份),然后就一步两步,一步两步的提交了。
第一步
git init
初始化本地仓库。没毛病,顺利。
第二步
git add .
添加所有文件。没毛病,顺利。
第三步
git commit -m "项目说明"
提交到本地仓库。没毛病!
第四步
git remote add origin + "码云项目链接"
把码云仓库链接与本地仓库关联。没毛病,离成功只差一步了的时候,我看下工程里面没有README.md
文件,我就又多走了一步。
第五步
git pull --rebase origin master
把码云上的README.md
文件同步到本地,然后就执行最后一步了。
第六步
git push -u origin master
那么,问题来了,失败了,这时候我就看了下码云,没有代码,好吧,那我大不了再试一下。我就看了下我的工程,一下就懵逼了,工程文件都没有了,所有的都没有了,卧槽,怎么肥事!我第一反应就是向码云反应,于是我就打了客服电话,没有人接,估计是下班了(当时晚上7点多了)。我就加了码云技术群,然后就在群里问了,群里还算活跃,马上就有人回答,问我有哪些操作,我就说了下,最后问到码云的动态里面有没有commit记录,我看了下,并没有,那人说,没有的话就找不回来了。再次懵逼!最后打电话给一个有五年工作经验的大佬,大佬问我进行了哪些操作,我就说了,他说没有毛病啊,最后问我,有没有执行过commit,我说有,他说有就行,就能找回,东西还都在本地,心里石头落地了。这时候码云群里一个大佬私聊我,就给我2行代码然后就找回了。
解决方法
git reflog
可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录。这时候看到了我的commit记录,以及id。
git reset —hard + id
强制回退到某次commit之前的状态,因为我是第一次提交,所以使用了这行命令。如果不是第一次的话,这行命令慎用。
不死心
代码找回后,我心有不甘,觉得自己的操作没有错,我就备份了一下,然后再次上传,成功了,心里一万只草泥马本奔腾。
后记
虽然第一次使用git的时候有点小插曲,不过还是觉得git很好用, 自己的一次疏忽,学会了如何找回,也算是有所收获,于是记了下来,希望也能帮助我这样的git小白。
网友评论