Git学习 - Part2(版本回退)
一、版本回退
-
查看历史记录
git log
命令显示从最近到最远的提交日志。
git log --pretty=oneline
可以减少输出信息
其中输入命令后显示的commit id
是版本号。
同时HEAD
表示当前版本,上一个版本就是HEAD^
,往上100个为HEAD~100
-
版本回退
git reset --hard HEAD^
表示回退到上一个版本
将HEAD^
修改为其它commit id
即可回退到对应版本
此时如果想再回到刚刚的版本,由于已经回退,使用git log
无法找到刚刚的commit id
,因此使用git reflog
命令可以记录每一次命令,从而可以找到所需版本的commit id
由于Git仅仅只是将HEAD
指向Git版本 回退的速度非常快。
二、工作区和暂存区
-
原理图
工作区就是电脑中看到的目录
版本库(Repository),即工作区中的隐藏目录.git
版本库中包含:-
暂存区(stage)
-
第一个分支
master
以及指向master
的指针HEAD
(创建Git版本库时,Git自动创建了master
分支)
-
-
向版本库添加文件
第一步:用git add
把文件添加到暂存区
第二步:用git commit
把暂存区的所有内容提交到当前分支
三、管理修改
-
Git管理修改
Git跟踪管理的是修改而非文件 -
查看工作区和版本库里面最新版本区别
使用git diff HEAD -- readme.txt
四、撤销修改
-
修改仅在工作区
git checkout -- <file>
,让这个文件恢复到最近一次git commit
或者git add
的状态 -
修改提交至暂存区
git reset HEAD <file>
,此时把暂存区的修改撤销掉,重新放回工作区
git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。
随后使用git checkout -- <file>
将工作区的修改丢弃即可 -
修改提交至版本库
使用版本回退的操作,即git reset --hard HEAD^
如果已经提交到远程版本库,则无法撤销
五、删除文件
-
工作区删除文件
使用rm
命令删除文件
rm <file>
-
版本库中删除文件
使用git rm <file>
删掉(该命令会同时删除掉工作区和暂存区的文件,所以可省略“工作区删除”这一步。或者不省略上一步,使用git add <file>
,因为删除也是一种修改,可以使用git add
命令提交修改至暂存区即可删除暂存区中该文件)
使用git commit
提交 -
恢复删除文件
与撤销修改操作相同,删除本质也是一种修改。
需要注意的是,从未被添加到版本库就被删除的文件是无法恢复的。