接着上一节的例子
我们在README.txt文件中再添加一段内容(add modify1):
1 add a file called README
2 add modify1
然后提交到版本库
查看日志
使用$ git log
显示文件的每次提交修改的记录,git log命令显示从最近到最远的提交日志
如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:
注意:24ee419cb72e7a7baa5814787dd2a63dfe031a34是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准
回退版本
每提交一个新版本,实际上Git就会把它们自动串成一条时间线。每一个提交的版本都在这条时间线上,我们可以回退到任意一个版本。。
回退时git必须要知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新提交的,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
比如:我们现在要返回上一个版本1 add a file called README
,需要使用git reset
命令
$ cat README.txt
后可以看到README.txt内容只有1 add a file called README
,已经回到上一个版本了
此时再git log
查看一下记录,会发现第二版本的历史记录不见了
回退后再返回新版本
如果想再回到第二版本,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找,找到第二版本的commit id是3628164…,就可以指定回到第二版本,这种方法对过去的每一个版本都适用,前提是要知道那个版本的commit id
这样发现第二版本又回来了,,版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向第二个版本的内容改为指向上一个版本,,所以你让HEAD指向哪个版本号,你就把当前版本定位在哪。
如果回退到某一个版本时,想回到新版本时,但是找不到commit id怎么办?其实还是有办法的,Git提供了一个命令git reflog用来记录你的每一次命令:
这样就能找到你的每一条命令的commit id