git和其他的版本控制系统如SVN的一个不同之处就是有暂存区的概念
工作区:就是在我们电脑能看到的目录
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是git版本库。
git版本库里面存了很多东西,其中最重要的就是stage(或者交index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD
我们把文件提交到git版本库里增加的时候,是分两步执行的
第一步:git add 把文件添加进去,实际上就是把文件修改增加到暂存区;
第二步:git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tjqgo4aY-1650620723126)(/Users/lifuwei/Library/Application Support/typora-user-images/image-20220422114444190.png)]
查看工作区和版本库中的版本的区别
git diff HEAD -- readme.txt
管理修改:
我们对代码进行了两次修改?如何操作呢?
第一次修改——>git add ——> 第二次修改 ——> git add ——> git commit
现在是把两次修改都提交了
也可以先提交第一次修改,在提交第二次修改
撤销修改:
git checkout -- readme.txt
这个语句的作用就是把readme.txt文件在工作区的修改全部撤销,这里有两种情况;
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一摸一样的样子;
一种是readme.txt已经添加到暂存区后,又做了修改,现在,撤销就回到添加到暂存区后的状态
想要查看暂存库中的文件内容直接用cat redme.txt
同样我们也可以通过git reset HEAD命令退回版本
这里需要说明的是--很重要,没有了--,就变换成了切换到另一个分支的命令。
删除文件
一种是:我们在工作区直接删除,但是文件并没有提交到暂存区和版本区
第二种是:当文件提交到版本库中
我们可以在文件呢管理器中直接删除或者使用命令rm test.txt进行删除
这时候,git知道你删除了文件,因此,工作区和版本库就不一致了,当我们git status时
会告知我们删除了哪些文件
现在我们有两个选择,
一个是确实要从版本库中删除该文件,那就用命令git rm删掉,并且git commit。
git rm test.txt /也可以手动的删除文件(效果一样)
git commit -m "remove test.txt"
执行上面两条语句后文件就从版本库中删除了
另一种情况就是删错了,因为版本库中还有,所以我们需要把误删的文件恢复到最新版本
git checkout -- test.txt
git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键 还原
|