之前git不熟练,导致我在使用git时,总是小心翼翼,生怕不小心输错了什么命令,导致代码GG,甚至有时候我还会手动本地备份一下。
这几天恶补了一下git,发现我真的很傻很天真,git毕竟是版本控制工具,它的目的就是要使用者对被管理的文件,随意增删改查——随意,不用怕!
版本号
版本号是git管理本地仓时生成的,每一次commit就会生成一个版本号,并且只有在commit时会生成版本号。(reset是将指针指向某一版本号)
一旦生成了版本号,说明git为你提交的文件做了快照,支持你随时切换到这个版本。
这类似于我们玩过的闯关游戏,有时我们会将游戏进度进行保存,方便我们回滚。比如我们在打boss之前做好保存,一旦发现打不过就从保存的进度重新来过。这个git的原理类似,只是git更强大。
使用git reflog命令可以很方便地查看版本号,如下图红方框中的哈希值,就是版本号的缩写。
命令小结
git log // 查看完整版日志,只能查“过去”
git reflog // 查看简易版日志,能看“过去”和“将来”
git log --pretty=oneline // 让日志一行显示,比git reflog更详细一些
![69283cdf5cf493f4d8ce4bb8fc495d85.png](https://i-blog.csdnimg.cn/blog_migrate/b4841962bf5c2dba97f095cfb4160926.jpeg)
git 支持你通过reset命令随意切换版本号,也就是控制文件版本。其中git reset有三种常用的参数--soft、--hard、--mixed,用于控制不同的版本切换方式,这是git中非常强大、常用的功能,我们下篇文章再讲。
此时你只需知道,只要commit之后,被管理过的代码,你可以随意各种操作。不用担心找不回。
git stash暂存修改
上面说了,只要将文件做了commit,就可以随意增删改查。但有时我们不想commit当前的修改,还想为所欲为,有办法吗?
有的。
此时只需要将当前的修改暂存即可,git stash命令可以将工作区的修改暂存起来,让工作区变得干净(不是commit不生成版本号),此时就可以为所欲为而不用担心代码丢失。
比如你正在开发一个新功能,这时需要紧急修改一个bug,但你又不想commit当前的代码,就可以将当前工作存储起来,去修复紧急bug。
推荐使用git stash save ‘说明信息’这一命令在储存的同时,可以添加说明信息。
通过git stash apply可以将最近的存储信息取出。
注意:
- stash命令默认只暂存被git追踪的文件,新增加的文件不可以(解决办法见下方)。
- stash只存储你最新一次commit之后的新增代码。
命令小结
git stash save ‘说明信息’ // 暂存代码,并添加说明
git stash list // 查看stash列表
git stash apply // 取出最近一次的stash
git stash apply 数字 // 输入list里对应的数字,取出对应的stash
git stash --all // 暂存所有文件,包括没有被git追踪的文件
小结
本文主要想说明,git作为一个强大的版本控制工具,通过commit和stash命令,可以让你在工作区为所欲为,而不用担心代码被你搞丢。
commit提交会生成版本号,用于回滚以提交的代码。stash用于暂存不想提交的代码。