GitHub代码管理学习之路(三)
来源:互联网 发布:仿真软件proteus下载 编辑:程序博客网 时间:2024/06/16 08:25
本文将详细讲述时光机穿梭,让我们来看看他究竟是何(吹)方(逼)神(谈)圣(嘘)
前言
想了解时光机穿梭,就得先熟悉下两个命令
1. 查看状态——git status
2. 查看差异——git diff
首先,我们来本地修改上一篇文章中test.docx的内容(自定义,例如我就是添加五行“有句妈卖批不知当讲不当讲”)
现在,运行$ git status
看看会不会出现什么神奇的效果
你没看错,就是这么的不神奇~~~言归正传,出现这么一大串的英文,其实就是告诉你,test.docx文件内容已被修改,提示你可以提交到仓库!虽然告诉我们test.docx被修改了,但如果能看看具体修改了什么内容,自然是很好的。所以就用到查看差异的命令
现在,运行$ git diff test.docx
看看会不会出现什么神奇的效果
就是这么神奇的把文件的差异清晰明了地展现出来给你看~
git diff顾名思义就是查看difference,显示的格式正是Unix通用的diff格式
现在我们可以执行上篇文章的提交二步曲(不熟悉的看官,可以回头看看上一篇文章)~
有兴趣的看官可以在执行完add之后,再执行一次查看状态命令
版本回退
学习完两个命令之后,开始本文的正式内容
首先,回顾下test.docx文件一共有几个版本被提交到仓库里了!问题来了,如果忘记了怎么办!这时候git就站出来说了句——“天空飘来五个字,那都不是事”!
这个问题,只需要用$ git log
命令来解决就好
git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是 最后一次修改,最早的一次是This is test。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:
补充:git log只能作用于当前窗口未关闭过才能显示!历史记录是$ git reflog
重点来了,现在我们要做的就是把当前版本回退到上一个版本!
执行$ git reset --hard HEAD^
执行结果没有意外将会是:HEAD is now at "提交ID" "上一个版本的备注"
上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
再去看test.docx的时候,里面的‘妈卖批’已经由七行变成三行了!
这时候有人问,如果我回退成功之后,发现我之前那个版本才是对的,想回滚!对于这个问题,我只能说很抱歉,我还真有办法让你回滚!
只需要将 HEAD^ 改为 需要目标版本的提交ID(commit — a5e247c54a4f66767db1b830cf196d1c46443d2d,其实也不用填全部,只需填前面几个,即:$ git reset --hard a5e247c
,这样git就会自动寻找了!)
关于提交ID的补充:是一个SHA1计算出来的一个非常大的数字,用十六进制表示
下面用两张图解释下git的回滚机制
Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向第一次修改 改为指向This is test
图片有点抽象,勿喷~~~~缺乏艺术细胞
工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
- 工作区
就是你在电脑里能看到的目录 - 版本库
工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
分支和HEAD的概念后面将会提及
上篇文章中的提交二步曲,现在再来重温下:
第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
你可以简单理解为,第一步的操作是把文件通通放到暂存区,然后第二步的操作是一次性提交暂存区的所有修改。
提交之后,抽象图的内容将会如下
你会发现,暂存区就会感觉“身体”被掏空一般的干净~
这章的内容比较重要,如果有心学习的,请务必理解透暂存区!这样对后面学习的帮助会很大
写的有些乱,不知道各位看官有什么想法!可以留言喔~(大神请轻喷=_=)!
- GitHub代码管理学习之路(三)
- GitHub代码管理学习之路(一)
- GitHub代码管理学习之路(二)
- Git&GitHub学习笔记之(三)Git向GitHub提交代码
- GitHub学习笔记三·分支管理
- github学习之代码上传
- github学习 之 上传代码
- github学习使用(三)
- 管理之路(三)
- GitHub学习之路
- GitHub 学习之路
- GitHub学习系列之-向GitHub 提交代码
- 使用github管理代码
- github 代码管理基础
- msysGit管理GitHub代码
- gitHub管理代码
- github代码管理
- git-github管理代码
- spring boot Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @Spr
- tomcat启动访问指定目录
- CDH HBASE使用solr创建二级索引,更新删除索引
- 数据结构学习笔记(7)---二叉树递归与非递归遍历
- markdown写法,持续更新
- GitHub代码管理学习之路(三)
- 重排数列
- java NIO BIO和AIO
- Redis.conf配置文件
- E. Anya and Cubes (CF #297 (Div. 2) 折半搜索)
- 3GPP
- cocos2dx3.10在Android平台,出现错误org.apache.http不存在
- Android 日间夜间切换
- 磁盘空间不够也会引起 java.net.SocketException: Broken pipe