前情:最近在开发项目中对版本管理有了新的理解,感觉在这方面有了新的收获。同时学习了一个新的git指令:git reflog
实际了解之后,发现这个指令不是很常用,但是对于特定的场景的话它还是非常比较方便
这里我列举两种我觉得可以借助git reflog的使用场景
首先,我看到了几篇不错的博文,分享一下,这里就不再介绍git reflog的基础知识。我想在你真正了解过git reflog的基础之后再来看这两篇文章会加深你的印象。
使用场景:
场景一:帮助你恢复之前删除的提交
偶尔我们需要使用git reset 回退版本的时候,假如我们前一步没有使用git log查看提交,又如果我们关闭了git命令行,又如果我们之前也并没有推送远程分支留有备份的的话,这些都没有做的话,那我们是可以使用git reflog查看找到当前分支回退之前的版本,只要找到那个哈希值,那么使用git reset就可以回退到之前的版本(以前我认为git reset只能回退到以前的某个版本,实际上你只要有对应的版本号-哈希值,那么你可以任意穿梭)
注:这里我不举例描述(因为我已经比较熟练这个操作,详细内容可以参考我推荐的第二篇博文)
场景二:帮你你恢复之前删除的分支
这种情况也是存在的,比如现在你从主分支master拉取最新代码到你的开发分支develop1去开发新功能,测试环境的分支比如说是release,那我们在做项目迭代的时候会有修复问题和开发并行的时候,我们是需要经常切换分支的。假设有一天我们收到通知,我要开发的功能不需要做了,那么我的开发分支develop1不被需要了,我手欠切换到release分支,并且删掉了develop1分支。但是很快又被通知需要开发这个功能,但是我已经把develop1开发分支删掉了。我们知道那个分支是有一部分写好的功能的,如果我们不想二次开发的话,就需要尝试恢复develop1分支。同样的,远程仓库也没有备份过我刚刚开发的develop1分支,那么我们就可以通过git reflog指令去查找最近的操作日志,找到我们从develop1分支切换到release分支的记录,可以看一下当时develop1分支对应的的哈希值,或者我们在更早之前在develop1分支上一定是做过提交的,找到对应你想回到的那个版本的哈希值,此时我们要做的就是从当前稳定分支上(比如master),新建一个分支(名字随便,一般是保持和之前删除的分支名称一致),然后还是利用git reset指令,去穿梭到我复制的那个哈希值的版本,即可实现恢复之前删除的分支。
注:这里我不举例描述(因为我已经比较熟练这个操作,详细内容可以参考我推荐的第二篇博文)
小结:
我们需要知道的是,git reflog指令相当于是我们的操作日志,使用它可以对我们有时的一些误操作或者恢复某些版本起到一定的弥补作用。不过它确实也不是必须的(如果我们做好备份,或者确定明确我们需要做什么),但是如果你在git上做错了一些事情,它或许能帮到你挽回一些损失。还有就是一个项目多人同时开发的时候,确实还是要保证应该有一个自己的分支,不要随便merge别人的代码,当然你可以先从当前你的分支切换一个新分支之后在merge别人代码,而你的代码分支一定要保留好,最好不要被污染。
git reflog
git reset --hard 哈希值