码迷,mamicode.com
首页 > 其他好文 > 详细

Git操作-版本回退

时间:2015-05-02 20:47:23      阅读:571      评论:0      收藏:0      [点我收藏+]

标签:git   版本回退   reset   log   reflog   

接着上一节的例子
我们在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

Git操作-版本回退

标签:git   版本回退   reset   log   reflog   

原文地址:http://blog.csdn.net/changjiangbuxi/article/details/45442045

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!