这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战
前言
今天我们继续复习Git知识点,这一章复习的是Git的数据恢复和标记知识点,我们一起来看看吧!
数据恢复
在你使用Git的时候,你可能会意外丢失一次提交:
①通常这是因为你强制删除了正在工作的分支,但是最后你却需要这个分支;②抑或是你硬重置了一个分支,放弃了你想要的提交.
如果这些事情已经发生,该如何找回你的提交呢?
实例
推荐方法最好是
直接看恢复,上面实例时当你使用硬重置回当初未删除版本进行恢复,出现的一系列问题解决
- 假设你已经提交了五次,而现在,我们将master分支硬重置到了第三次提交来找回当时删除的分支.但是这时候你会发现一个事情:
现在顶部的两个提交已经丢失了-没有分支指向这些提交(因为你将指针移到了第三个,那么前面两个就找不到了)
- 你现在已经得到并且恢复当时第三次还存在的的提交了(
恢复方法在下面,恢复文件到这步,下面3、4是回到最新版本)现在准备回到当初最新的版本时,你发现你进行打印竟然没有前面两次提交信息(你需要他的哈希值进行版本穿梭或者重置),你需要最新一次提交的哈希值,但是你估计想不起来了,对吗?
- 最方便,也是最常用的方法,是使用一个名叫
log reflog的工具(前面高层命令提过),当你在工作时,Git会默默记录每一次你改变的HEAD时它的值,每一次你提交或者改变分支,引用日志都会被刷新- 如果
git reflog显示的内容你觉得不足够多,可以执行git log -g,这个命令会以标准日志的格式输出引用日志
恢复 推荐的
通过
git reflog找到你需要的文件还未删除的版本哈希值,那个就是你丢失的提交,你可以通过创建一个新的分支指向这个提交来恢复它.例如:你可以创建一个名为
recover-branch的分支执行这个提交git branch recover-branch 当前需要恢复(之前丢失的)的提交哈希值现在有一个名为
recover-branch的分支是你的master分支曾经指向的地方(即当时你删除该需要的文件的前的那个版本),这样你在这次提交的版本后,也能通过切换这个分支得到曾丢失的文件这个分支功能能帮你做很多东西,善用分支,Git最强功能
打tag
Git可以给历史中的某一次提交打上标签,表示重要.比较有代表性的是人们会用这个功能来
标记发布节点(v1.0等等)
1、列出标签
命令:
git tag或者git tag -l 'v1.*'前者列出所有,后者列出以
v1.开头的所有
2、创建标签
git使用两种主要类型的标签:轻量标签 与 附注标签
①轻量标签
轻量标签很像一个不会改变的的分支(他只是一个特定提交的引用),直接在提交前使用命令即可给当前分支打上标签
git tag v1.0
#或者下面的
git tag v1.0 提交对象哈希
②附注标签
附注标签是存储在Git数据库中的一个完整对象.他们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间;通常
建议创建复制标签,这样你可以拥有以上所有信息,但如果只是想用一个临时标签,或者由于某些原因不想表村那些信息,轻量标签也是可用的
git tag -a v1.0
git tag -a v1.0 提交对象哈希
git tag -a v1.0 提交对象哈希 -m "我的注释信息"
3、查看特定标签
git show可以显示任意类型的对象(git对象 树对象 提交对象 tag对象)命令:
git show tagname
4、删除标签
删除标签 要删除你在本地仓库上的标签,可以使用命令
git tag -d <tagname>如下:git tag -d v1.0应该注意上述命令并不会从任何远程仓库中移出这个标签,你必须使用
git push <tamote>:refs/tags/<tagname>来更新你的远程仓库,如下git push origin :refs/tags/v1.0 # origin是你配置的远程仓库地址别名,你可以直接用远程仓库地址
5、捡出标签
如果说你想查看某个标签所指向的文件版本,可以使用
git checkout命令git checkout tagname虽然说这会使得你的仓库处于"分离 头指针(deacthed HEAD)"状态.在"分离头指针"状态下,如果你做了某些更改然后提交它们,标签不会发生变化,但你的新提交将不属于任何分支,并且将无法访问,除非访问确切的提交哈希,因此你如果需要进行更改--比如说你需要
修复旧版本的错误--这通常需要创建一个新的分支(捡出后创建,就会默认将当前捡出的版本作为新分支的第一版本-前面分支提到过)这样就可以修改到旧版本的代码(如同vue的尤雨溪在vue3.x会更新vue1.0版本生态)
git checkout -b version(新的分支)
总结:慢慢理解,一步步来,加油!