修改一下readme.txt文件
echo git is a powerful version control system > readme.txt #添加powerful
git status #查看git仓库当前的状态
上面的输出表示readme.txt被修改了但是还没有提交
git diff readme.txt #查看更改信息
再次提交这个文件还是两步:
git add readme.txt
git commit -m 'second submission'
git status
已经没有需要提交的修改了
下面进行版本库回退:
git log #查看提交(commit)的历史记录
第二次提交显示在了最前面
git log还可以加参数 --pretty=oneline可以简化显示
git log --pretty=oneline
这个是commit的id,用SHA1计算出来的一个非常大的数字,用十六进制表示。因为git是分布式的,可能多人在一个版本库工作,所以不能用1 2 3 4 5……这样的数字。
在git中HEAD表示当前版本,是最新的提交。上一个版本是HEAD^,HEAD^^,HEAD^^^…依次类推。如果太多了,可以用数字表示,向前100个版本就是HEAD~100。
git reset --hard HEAD^ #退回到上一个版本。
回退后再查看,readme.txt已经回到上一个版本了。现在只剩这个版本了。
但是执行了这个命令,有后悔了咋办。如果窗口还没有关掉,向上找到上一个版本的commit_id。
然后执行git reset 命令
git reset --hard e39612d #前几位就可以了
readme.txt又回到了second submission 版本了。
这实际上是一种指针操作。
HEAD 最先指向了second submission ,然后回退版本后,又指向了first submission。然后会把工作区的文件更新了。所以HEAD指向哪个版本号, 当前版本就定为在哪。
通过日志恢复版本库
如果确实回退到了,first submission,并且关了窗口,不能从窗口拿到commit_id的时候。
可以使用 git reflog 命令。