Git学习心得(五)一文了解Git暂存区stage

当我们久未打开的文件,已经忘记了这个文件的各种修改,以及修改到那一步了我们可以使用以下代码,查看过往的目录

$git log 

当我们修改完修改之后,首先可以通过git diff来查看修改了什么,并再一次查看自己的修改内容,但修改之后不可以直接git commit,此时直接提交无法成功提交,可以运用三个不同的方法查看文件是否有提交成功

  1. git log查看日志,观察是否有新的历史提交
  2. git diff还能查看到文件的差异输出
  3. git status查看文件状态,看到文件的修改状态

我们正确的提交过程是使用git add或者git commit -a这两个命令先将文件的修改提交到缓存区,相当于添加到将要提交的任务单中,此时再查看git diff会发现没有差异输出了,但这不代表着被提交了,查看HEAD当前版本库的头指针,git diff HEAD可以看到和当前已经真正提交过的文件版本比较还是有差异的,其次再使用git status可以看到有绿字显示已经modified了,再一次进行git commit就会正式提交到版本库

tips:如果使用简便的git status -s时,没有git add操作前,会看到M处于第二列,这代表工作区文件和提交暂存区中的文件有改动,进行git add操作后,M会在第一列,代表版本库于提交暂存区的文件有改动。

若是在提交到缓存区后,如果不commit,然后再次修改文件,此时就会发现出现了两个不同状态,一个是已经绿字modified的,另一个是红字modified,这说明此时有两个不同版本的文件,一个在工作区,即我们正在修改的区域,另一个是已经提交到缓存区的版本,此时再查看工作区和缓存区的不同可以看到不加任何参数的git diff就是比较工作区和缓存区的,回应了上文中的查看文件状态的方法,当然还可以使用--cached或者--staged的参数来看缓存区和版本库的文件区别。
在文件提交到缓存区后在工作区再一次修改后,可以有两个选择,一个是再次添加暂存区,其次是取消工作区做出的改动,分别设计git resetgit checkout
最后使用git commit提交的时候,提交的是在缓存区中的文件。


什么是缓存区(stage/index)?

对我目前来说,缓存区就是介于工作区和版本库中间的一个虚拟空间,相当于考试交卷前再给你一次机会好好检查你做对了吗,并且可以随时拿回卷子进行修改。这个空间首先是一个包含文件索引的目录树,记录文件名和文件状态信息,如时间戳和文件大小,文件的设计内容存储在Git对象库,通过索引找对象库,因此,在进行每一项Git操作的时候,例如为了查看文件修改内容,则Git会比较缓存空间和工作区文件的文件状态信息,判断文件是否被改动,再进一步决定是否需要显示对比信息。
有了缓存区那就相当于文件一共有三个版本分别在工作区,缓存区,版本库,通过git命令可以使得这些区域的文件版本相互覆盖,注意,这属于很危险的操作,容易丢失工作区的更新内容。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值