git版本管理工具之版本管理

http://www.cooklife.cn/detail/551576bd9218037076133136#View

git是干嘛的?

版本管理工具是干嘛的?当然是管理同一个文件不同的版本的。那么版本是什么概念,对于一个文件,从新建到完成态,期间会经过很多个状态,有的时候我们希望保存这些中间状态,在需要的时候可以恢复到其中的某个状态,这个中间状态就是一个版本。

跟svn不同,svn中的版本号是一个自增长的数字,在git中的版本号是根据某些规则生成的不重复的长度为40的字符串,每次commit之后就会生成一个版本号来标识这次提交之后版本库的快照,之后可以根据这个版本号来恢复到当前的状态。

我们在README.txt文件中再次加入一些信息"add some information again"

git add README.txt
git commit -m "add some information again"
$ git log --pretty=oneline
7c19d353bdf0f077871d3021f5bd2b405f749061 add some information again
06e8b27ed48476f4a1cface043d1c2b5d4f3abd8 add some information
e182fa0a95c19feb5951e0a05fff0fd2260fb39b '初始化提交'
通过git log我们可以看到提交的历史,在git中用HEAD表示当前的版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,上上上个版本就是HEAD^^^,那么往前100个版本是....,这里就不写了,大家自己可以回去练习。

如果我们想做时光机回到回去怎么办?答案是使用git

git reset --hard HEAD^
git reset --hard versionNum
versionNum是那四十字符长度的字符串,我们再看看,工作空间内的文件是否恢复到上一个版本了,我们再执行git log

$ git log
commit 06e8b27ed48476f4a1cface043d1c2b5d4f3abd8
Author: yangnianbing <137602812@qq.com>
Date:   Fri Mar 27 22:53:03 2015 +0800

    add some information

commit e182fa0a95c19feb5951e0a05fff0fd2260fb39b
Author: yangnianbing <137602812@qq.com>
Date:   Fri Mar 27 20:06:58 2015 +0800
    '初始化提交'
咦,我们回到了过去,但是发觉不好玩了,回头一看,返回未来的坐标肿么没了?这下可怎么办,难道就生活在这个拉屎只能用瓦片刮屁屁的时代么。当然是不会的,万能的git大神怎么可能没有考虑到这一点。
$ git reflog
06e8b27 HEAD@{0}: reset: moving to HEAD^
7c19d35 HEAD@{1}: commit: add some information again
06e8b27 HEAD@{2}: commit: add some information
e182fa0 HEAD@{3}: reset: moving to e182
488db63 HEAD@{4}: commit: ddssd
e182fa0 HEAD@{5}: commit (initial): '初始化提交'
look,返回未来的坐标又回来了git reset --hard 7c19d35,好吧,我们又回来了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值