git快速入门(三)版本回退
2016-07-19 00:34
211 查看
在开始之前,首先介绍一下git仓库的三个部分,这是必须要了解的三个概念 ——3分钟
你平时在浏览和编辑的那些文件所在的区域就叫工作目录,工作目录是你能直接接触到文件的地方
当你在工作目录编辑完文件,然后用git add命令添加文件的时候,这个文件实际上被添加到了暂存区
当你一次或多次添加了文件,最后用git commit命令提交的时候,这些文件的信息就会从暂存区同步到master分支
一张图表示
图片来自网络,侵删
commit d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22
Author: Name <xxx@xxx.com>
Date: Mon Jul 18 19:23:03 2016 +0800
add readme.txt
commit后的那一串表示此次操作的标识
author 操作者
date 操作时间
最后是你-m后面留下的提示信息
一大串看得眼花缭乱,使用
命令可以简化信息
d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22 add readme.txt
只显示标识和提交信息
那么,有了这些信息有什么用呢,这涉及git的主要作用——版本控制了 ——五分钟
保存之后用git status查看当前状态
此时你回想起要先git add,然后执行git commit,并且你在执行git commit时留下了一条叫“asdf”的信息
显示
[master 5a65804] asdf
1 file changed, 2 insertions(+)
然后你用git log --pretty=oneline查看刚才的操作
5a65804fefe8abeea5b862304032bfc9aa435460 asdf
d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22 add readme.txt
你发现多了一条名为asdf的操作
这时你就可以进行版本回退的操作了
--hard不能丢,hard后面接标识,一般取前4位就行
顺便一提,git里的参数,如果字母数量大于1个,一般都是两条横杠,比如之前的--pretty
重新打开文本,发现恢复到一个字没有的状态
当然,不仅可以回退,当你回退后又想前进时,同样用这个命令,标识改成你想要的版本
这里的5a65是asdf标识的前4位
HEAD is now at 5a65804
asdf
这是一个用来跳跃版本的命令,在跳跃的同时修改暂存区和工作区
这个命令的快捷方式
HEAD^代表上一次提交时的版本
同理HEAD^^代表上上个版本,几个^代表几个版本
其实,git log命令存在一个隐含的小问题,那就是只能显示此次会话的操作,假设你回退了几个版本,关闭bash再打开,使用这个命令会发现回退的那几个版本看不到标识了,想再前进好像不可能了,实际上,你可以用这个命令
它能让你看到你所有的操作,试试看
工作目录,暂存区,master分支
简单地说,你平时在浏览和编辑的那些文件所在的区域就叫工作目录,工作目录是你能直接接触到文件的地方
当你在工作目录编辑完文件,然后用git add命令添加文件的时候,这个文件实际上被添加到了暂存区
当你一次或多次添加了文件,最后用git commit命令提交的时候,这些文件的信息就会从暂存区同步到master分支
一张图表示
图片来自网络,侵删
git log
回到主题,当你提交完毕后,如何查看自己已经进行过的操作呢?git log可以帮助你做到这一点 ——1分钟$ git log
commit d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22
Author: Name <xxx@xxx.com>
Date: Mon Jul 18 19:23:03 2016 +0800
add readme.txt
commit后的那一串表示此次操作的标识
author 操作者
date 操作时间
最后是你-m后面留下的提示信息
一大串看得眼花缭乱,使用
$ git log --pretty=oneline
命令可以简化信息
d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22 add readme.txt
只显示标识和提交信息
那么,有了这些信息有什么用呢,这涉及git的主要作用——版本控制了 ——五分钟
git reset
让我们回到工作区,在刚才新建的readme.txt里添加几行文字,假设你在里面打了一串乱码保存之后用git status查看当前状态
$ git status
此时你回想起要先git add,然后执行git commit,并且你在执行git commit时留下了一条叫“asdf”的信息
$ git add readme.txt $ git commit -m "asdf"
显示
[master 5a65804] asdf
1 file changed, 2 insertions(+)
然后你用git log --pretty=oneline查看刚才的操作
5a65804fefe8abeea5b862304032bfc9aa435460 asdf
d837e2cd9e964b813ef2c5cb40bb3ce9af68fd22 add readme.txt
你发现多了一条名为asdf的操作
这时你就可以进行版本回退的操作了
$ git reset --hard d837
--hard不能丢,hard后面接标识,一般取前4位就行
顺便一提,git里的参数,如果字母数量大于1个,一般都是两条横杠,比如之前的--pretty
重新打开文本,发现恢复到一个字没有的状态
当然,不仅可以回退,当你回退后又想前进时,同样用这个命令,标识改成你想要的版本
$ git reset --hard 5a65
这里的5a65是asdf标识的前4位
HEAD is now at 5a65804
asdf
这是一个用来跳跃版本的命令,在跳跃的同时修改暂存区和工作区
这个命令的快捷方式
$ git reset --hard HEAD^
HEAD^代表上一次提交时的版本
同理HEAD^^代表上上个版本,几个^代表几个版本
其实,git log命令存在一个隐含的小问题,那就是只能显示此次会话的操作,假设你回退了几个版本,关闭bash再打开,使用这个命令会发现回退的那几个版本看不到标识了,想再前进好像不可能了,实际上,你可以用这个命令
$ git reflog
它能让你看到你所有的操作,试试看
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- 查看github pages文档的方式
- 使用BAE的基于Web.py的简单博客程序
- git更新已經刪除的文件
- 提取Git每次提交后Commit的文件
- GIT迁移服务器
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- git终极指南:在实际开发中的应用
- 6 个托管 git 仓库的地方
- 两分钟学会如何在github托管代码
- Git远程操作详解
- 25个 Git 进阶技巧(翻译)
- 详解版本控制利器Git,SVN的异同以及适用范围
- git多账号登录问题解析
- Android自定义View实现仿GitHub的提交活跃表格
- Ruby实现的删除已经合并的git分支脚本分享
- 在 Shell 提示符中显示 Git 分支名称的方法
- Git使用基础篇(一些常用命令和原理)