每个项目都有一个 git 目录(如果 git clone 出来的话,就是其中.git 的目录),它是 git 用来保存元数据和对象数据库的地方。这个目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据
可以发现,Git会告诉你,git checkout -- file 可以丢弃工作区的修改,如下命令:
git checkout -- readme.txt,如下所示:
命令 git checkout --readme.txt 意思就是,把readme.txt文件在工作区做的修改全部撤销,这里有2种情况,如下:
-
readme.txt自动修改后,还没有放到暂存区,使用 撤销修改就回到和版本库一模一样的状态。
-
另外一种是readme.txt已经放入暂存区了,接着又作了修改,撤销修改就回到添加暂存区后的状态。
GIT采用第一种方式。像Subversion和Perforce等版本控制系统都是记录文件每个版本之间的差异,这就需要对比文件两版本之间的具体差异,但是GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。
|