git快速入门(四)工作区,暂存区以及master分支

时间:2023-01-10 15:30:14

接下来的内容能帮你深入了解工作区,暂存区,master分支之间的关系以及它们之间互相的撤回操作



1、git diff


目前为止,你已经知道了git add命令可以将工作区的内容添加到暂存区用以跟踪该文件的改动,git commit是将暂存区的内容同步到master分支,是不是果真如此呢,可以用git diff命令验证这个结论

——15分钟


$ git diff -- readme.txt                                         //查看工作区与暂存区的差别
$ git diff HEAD -- readme.txt                             //查看工作区与master分支的差别
$ git diff --cached -- readme.txt                        //查看暂存区与master分支的差别


假设你的仓库现在是干净的,也就是工作区,暂存区以及master分支的内容全部同步完毕,而工作区里的readme.txt的内容为两行乱码

git快速入门(四)工作区,暂存区以及master分支

然后你分别输入以上三行命令

你发现什么结果也不返回,这是正常的,因为三个地方的内容没差别


接下来你需要做三件事情


一、将两行乱码删除,只输入3,add并commit

用以上三个命令查看

提示:这个地方三个区一致,都是3


二、将3修改为2,只add不commit

用以上三个命令查看


提示:这个地方工作区和暂存区一致,master分支不一致

  工作区,暂存区是2,master分支是3


三、将2修改为1,既不add也不commit

用以上三个命令查看


提示:这个地方工作区,暂存区,和master分区均不一致

   工作区是1,暂存区是2,master分支是3


命令结果解析见下一篇


接下来是他们之间的撤回操作,很简单,理解了就会使用                            ——1分钟

2、  git checkout --  和  git reset HEAD


具体用法

$ git checkout -- readme.txt         //暂存区的readme.txt内容覆盖工作区
$ git reset HEAD readme.txt          //master分支当前位置的readme.txt内容覆盖暂存区

git checkout命令中的--(两条杠)不能丢,因为没--的话这个命令就会变成其他作用,之后的文章会说明(用于切换分支)

git reset之前就见过了,也能用于回退版本,这里介绍的是用于单一文件的情况


假设你经过实践后,领悟到了其中的内涵,那么请你解决下列几种情况                    ——5分钟


一、假设你在一次commit后又对工作区的文件readme.txt进行了修改,然而你想撤销这个修改

二、假设你在一次commit后对工作区的文件readme.txt进行了修改,git  add了之后又修改了一次,你想撤销到第二次修改之前

三、假设你在一次commit后对工作区的文件readme.txt进行了修改,git  add了之后又修改了一次,你想撤销到第一次修改之前

四、你不小心完全删除了一个文件,无法通过操作系统找回,而你想恢复它

五、你修改了一个文件,不仅add,而且还commit了,你想撤销这个修改


如果你能顺利完成以上操作,那么你可以对这些概念有比较深的了解了,实在不知道怎么做的,可以看另一篇解析


最后介绍这个命令                    ——30秒

3、git rm                          


$ git rm readme.txt

用于删除readme.txt这个文件,删除了之后要commit一次,之后可以用git reset找回

$ git rm --cached readme.txt
将暂存区中的readme.txt删除,工作区的不会改变