这一篇重点说说 Git版本的游历,想要在不同版本之间操作,这个就要涉及到git一个非常重要的部分——日志管理
查看历史记录
git log
此命令用来查看版本的历史记录
比如说我这里添加了5条记录
![c2cd60262f2230c8e82ae81b31452b5c.png](https://i-blog.csdnimg.cn/blog_migrate/b34069083d0bfb0f918475d654449816.jpeg)
由于历史记录比较多,一屏都显示不完,那么我们可以用
git log --pretty=oneline
以一行的形式,格式化显示日志
![878a1917b907c84cda89ac6b1c0a5c25.png](https://i-blog.csdnimg.cn/blog_migrate/af5c6f0a413d55bcf12eb1553244e9e4.jpeg)
这样看着就清爽多了
记不住pretty这么长的参数,还有个更简洁的命令
git log --oneline
这个命令更简洁一些,当然显示也就更简洁一些,它只会显示部分hash值
![6d7bdabab888f7d0134a1627f5302289.png](https://i-blog.csdnimg.cn/blog_migrate/6cc5175bcdbf24d823494bbca1012d5a.jpeg)
日志相关的还有个重要的命令需要记一下
git reflog
这个命令显示出了head指针的变化
![24046bb43118b4ff1731070d46550a9e.png](https://i-blog.csdnimg.cn/blog_migrate/c17d503c981182c640f86aa5b8489bdc.jpeg)
关于提交日志,还有一些小细节的东西
比如说查看每次提交都改了哪些文件,每个文件都改了哪些内容
又或者说专门查看某个文件被改了多少次,每次又改了哪些内容
这些我觉得在命令行里查看太不友好了,这些就交给SVN公司出的git工具来做吧,简单愉快。
下面要说就是版本的游历,版本前进和后退的本质就是移动head指针的位置。
版本后退
git reset --hard hash值
比如说我们添加想添加1,2,3,4,5了,我们要把这些改动都撤回来,那么我们只需要
git reset --hard b3dd686,此时我们的文件就还原成最原来的模样了。
![5a29a2a08b431a2182dc938cf64b7706.png](https://i-blog.csdnimg.cn/blog_migrate/4ee620e4a0f55ec801187a7e1f336e83.jpeg)
head指针也指回第一项了
![14cdb7c9bb40a0a8d05070bb1a3259ab.png](https://i-blog.csdnimg.cn/blog_migrate/69e73b7f03f93ca4af54f6807fa3d516.jpeg)
版本前进
git reset --hard hash值
既然可以后退,当然还可以前进,版本的前进还是这个命令,带上相应的hash值
git reset --hard 3eae1f6,我们的文件又回来啦。
![746137417d3ae483f824cc726e6f8eb7.png](https://i-blog.csdnimg.cn/blog_migrate/4990b5d221167e87baf173017d4f44ff.jpeg)
再偷偷的瞄一眼head指针,发现指针也指回来了
![1471301e0154c81e07b9a978354a920b.png](https://i-blog.csdnimg.cn/blog_migrate/7dd6e33fdb005185a085381cfa4351e1.jpeg)
reset参数
git reset这个命令就介绍到这儿了,简而来说reset就是重置,也就是把版本重置到任何时期。
细心的同学注意到了,我们一般都带上head参数,那hard参数是啥呢?
--hard
1)在代码库中移动head指针
2)重置暂存区
3)重置工作区
--mixed
1)在代码库中移动head指针
2)重置暂存区
--soft
1)在代码库中移动head指针
PS:
--hard参数也是我们最常用的参数
看完了上面的介绍,那么大家也可以理解了git中一个非常常用的命令:
git reset --hard HEAD
这个命令的作用就是把版本回退到HEAD指针指向的版本(绝大多数情况下呢,HEAD指针指向的是当前版本库的最新内容)。
PPS:
git reset --hard HEAD^
这个命令大家也可能用到,一个异或符号表示回到上一次提交,两个异或符号表示回到上两次提交。