1, git tag 记录当前版本库状态
1.1 给最近一次提交打个标签,git 里面叫“里程碑”。
1.2 对 git tag 的初次理解:
对当前最近一次 commit ID 进行记录来实现对当前版本库状态的保存。
用下面的操作就验证一下:
可以看出这个 tag 跟 master 都处于 refs 下面,我的理解就是他只是对版本库当前状态的一个引用而已。
2, git 删除文件:
2.1 保存当前版本库、暂存区、工作区的状态,以便进行后面不同的实验:
这里使用 git stash apply 是因为 git stash apply 在恢复的时候不会从 git stash list 中删除,以便多次恢复。
2.2 直接执行 rm 进行删除:
在工作区直接删除文件对暂存区、版本库没有任何的改变,文件依旧存在。
2.3 执行 git rm 删除文件
commit 到版本库:
提交以后我们可以通过:
git ls-files --with-tree=HEAD^ 查看提交前的 tree ,发现文件依旧存在版本库中。
git cat-file -p HEAD^:welcome.txt 查看被删除的文件在被删除前的内容。
git rm 删除文件会影响到工作区以及暂存区,提交以后会直接影响到版本库,但不影响提交以前版本库的目录结构。
2.4 恢复删除的文件:
2.4.1 git cat-file -p HEAD^:welcome.txt > welcome.txt
这里我有个疑问:在恢复welcome.txt之前不是已经把文件删除掉了吗?为什么 git ls-files --with-tree=HEAD^ 却显示删除提交前的目录里面会有这个文件呢?
查看历史目录树看看是神马问题:
奇怪,无论我用HEAD^还是882ed4b,都显示有welcome.txt文件,这里我也没有搞懂,郁闷。。。
不服气,重来,看看是神马问题!
2.4.2 这次直接从之前的提交中 checkout 出来:
提交:
依旧是这样,没搞懂,超郁闷。。。。。
3,移动文件,给文件改名:
撤销之前的改名:
o(∩_∩)o 哈哈,welcome.txt 文件又回来了。