设为首页 收藏本站
查看: 718|回复: 0

[经验分享] Git基础之(五)——时光穿梭机——工作区和暂存区

[复制链接]
发表于 2018-9-17 08:35:26 | 显示全部楼层 |阅读模式
  Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
  先来看名词解释。
工作区(Working Directory)
  就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区:

版本库(Repository)
  工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

  分支和HEAD的概念我们以后再讲。
  前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
  第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
  第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
  因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
  你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
  俗话说,实践出真知。现在,我们再练习一遍,先对readme.txt做个修改,比如加上一行内容:
Git is a distributed version control system.  
Git is free software distributed under the GPL.
  
Git has a mutable index called stage.
  然后,在工作区新增一个LICENSE文本文件(内容随便写)。
  先用git status查看一下状态:
$ git status# On branch master# Changes not staged for commit:#   (use "git add ..." to update what will be committed)#   (use "git checkout -- ..." to discard changes in working directory)##       modified:   readme.txt## Untracked files:#   (use "git add ..." to include in what will be committed)##       LICENSEno changes added to commit (use "git add" and/or "git commit -a")  Git非常清楚地告诉我们,readme.txt被修改了,而LICENSE还从来没有被添加过,所以它的状态是Untracked。
  现在,使用两次命令git add,把readme.txt和LICENSE都添加后,用git status再查看一下:
$ git status# On branch master# Changes to be committed:#   (use "git reset HEAD ..." to unstage)##       new file:   LICENSE#       modified:   readme.txt#  现在,暂存区的状态就变成这样了:

  所以,git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支。
$ git commit -m "understand how stage works"[master 27c9860] understand how stage works 2 files changed, 675 insertions(+) create mode 100644 LICENSE  一旦提交后,如果你又没有对工作区做任何修改,那么工作区就是“干净”的:
$ git status# On branch masternothing to commit (working directory clean)  现在版本库变成了这样,暂存区就没有任何内容了:

小结
  暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操作到底干了什么。
  没弄明白暂存区是怎么回事的童鞋,请向上滚动页面,再看一次。
  转载自:
  http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013745374151782eb658c5a5ca454eaa451661275886c6000



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588056-1-1.html 上篇帖子: Git基础之(四)——时光穿梭机——版本回退 下篇帖子: Git基础之(六)——时光穿梭机——管理修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表