zoukankan      html  css  js  c++  java
  • git暂存区

      在使用git开发时,有三个概念需要知道,工作区,暂存区和版本库。工作区就是直接进行操作的地方,版本库是要将修改提交的地方,那么暂存区是干什么的呢?下面将对暂存区深入研究

      一.修改后能直接提交吗?

      在工作区修改后能直接执行git commit提交吗?让我们一起试试。

      首先修改welcome.txt文件

      echo "welcome">>welcome.txt

      使用git diff查看工作区和版本库的差异。

      

      上面显示修改了welcome.txt文件。既然修改了工作区,那就直接提交吧!

      

      提交失败,提示没有要提交的东西。

      执行git status -s查看当前状态(这里使用status的别名,在上一篇git初体验中有提怎么配置别名)

      

      现在只有再执行git add welcome.txt

      再次执行执行git status -s查看当前状态

      

      我们比较一下在执行git add前后的状态可以发现两点不同。首先第一次M是红色,第二次是绿色,另外第一次M前面有空格,第二次M后面多一个空格。这代表什么含义呢?其实M都是修改了的意思,只不过两次修改代表不同的比较方式。第一次是工作区和版本库进行比较的结果,第二次是暂存区和版本库比较的结果。

      现在继续提交

      

      二.理解暂存区

      在版本库,.git目录下有一个index文件,下面我们来测试一下这个index文件

      1.执行ls --full-time .git/index查看index文件的时间戳为13:23:19

      

      2.执行下面命令修改welcome.txt的时间戳

      

      看见了吧,时间戳改变了,这个实验说明当你操作工作区的某个文件时,它的时间戳就会改变。这样有什么好处呢?其实这样做能够提高git的效率,当比较工作区某个文件是否改变时,会先看它的时间戳有没有改变,如果时间戳没有改变就不用打开文件比较内容了。这样在项目文件内容都很庞大时,效率提高很多。

      下面是工作区和版本库中的暂存区的关系

      

      上图左侧是工作区,中间是暂存区,右侧是master分支的目录树。

      执行git add . 命令可以将工作区的修改添加到暂存区,执行git checkout <filename>可以暂存区的文件同步到工作区,也就是让工作区和暂存区保持一致。

      执行git rm --cached <filename>命令可以移除暂存区特定文件。

      执行git commit命令可以提交暂存区修改,master分支目录树会做相应更新。

  • 相关阅读:
    【FIRST USE】第一次用git把代码上传到github
    [多线程学习笔记] 一个线程安全的队列
    C中宏展开问题
    C语言中的命名空间
    c语言中赋值语句的结果
    Python一些难以察觉的错误
    C语言中的内存压缩技术
    简述数据结构:二叉查找树
    指针与指针的引用、指针的指针
    C++ 中的virtual关键词
  • 原文地址:https://www.cnblogs.com/alichengyin/p/4341571.html
Copyright © 2011-2022 走看看