8、管理修改

现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

为什么说Git管理的是修改,而不是文件呢?我们还是做实验。第一步,对readme.txt做一个修改,比如加一行内容:

  1. $ cat readme.txt

  2. Git is a distributed version control system.

  3. Git is free software distributed under the GPL.

  4. Git has a mutable index called stage.

  5. Git tracks changes.

然后,添加:

  1. $ git add readme.txt

  2. $ git status

  3. # On branch master

  4. # Changes to be committed:

  5. # (use "git reset HEAD <file>..." to unstage)

  6. # modified: readme.txt

然后,再修改readme.txt:

  1. $ cat readme.txt

  2. Git is a distributed version control system.

  3. Git is free software distributed under the GPL.

  4. Git has a mutable index called stage.

  5. Git tracks changes of files.

提交:

  1. $ git commit -m "git tracks changes"

  2. [master 519219b] git tracks changes

  3. 1 file changed, 1 insertion(+)

提交后,再看看状态:

  1. $ git status

  2. On branch master

  3. Changes not staged for commit:

  4. (use "git add <file>..." to update what will be committed)

  5. (use "git checkout -- <file>..." to discard changes in working directory)

  6. modified: readme.txt

  7. no changes added to commit (use "git add" and/or "git commit -a")

咦,怎么第二次的修改没有被提交?

别激动,我们回顾一下操作过程:

第一次修改 -> git add -> 第二次修改 -> git commit

你看,我们前面讲了,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别:

  1. $ git diff HEAD -- readme.txt

  2. diff --git a/readme.txt b/readme.txt

  3. index 76d770f..a9c5755 100644

  4. --- a/readme.txt

  5. +++ b/readme.txt

  6. @@ -1,4 +1,4 @@

  7. Git is a distributed version control system.

  8. Git is free software distributed under the GPL.

  9. Git has a mutable index called stage.

  10. -Git tracks changes.

  11. +Git tracks changes of files.

可见,第二次修改确实没有被提交。

那怎么提交第二次修改呢?你可以继续git addgit commit,也可以别着急提交第一次修改,先git add第二次修改,再git commit,就相当于把两次修改合并后一块提交了:

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

好,现在,把第二次修改提交了,然后开始小结。

小结

现在,你又理解了Git是如何跟踪修改的,每次修改,如果不用git add到暂存区,那就不会加入到commit中。

git(12)---Git的基础知识相关推荐

  1. git 分支复制_Git基础知识(五)

    Git基础知识(五) 分支 都说Git的分支是它的必杀技特性,由于没有接触过太多的版本管理工具,就使用过的SVN来说,两者真的差别巨大.SVN创建一个分支,需要将内容复制一遍!这个时间真的是非常的漫长 ...

  2. 软考备考-系统构架师-18-信息系统基础知识相关试题整理

    博客迁移 不恰饭的小站 说明 1 整理2009~2016年系统构架师"信息系统基础知识"题目 2 内容见文档:"考点按章节整理\第 14 章 信息系统基础知识\信息系统基 ...

  3. Git 基础知识大全

    Git 基础知识大全 文章目录 Git 基础知识大全 1. 原理 2. 配置文件 3. 基本操作 4. 远程操作 5. 删除操作 6. 检出操作 7. 分支操作 8. 日志 9. 比对文件 10. 忽 ...

  4. git 历史版本导出_Git基础知识(九)

    Git基础知识(九) 一个远程仓库通常只是一个裸仓库: 一个没有当前工作目录的仓库. 简单的说,裸仓库就是你工程目录内的 .git 子目录内容,不包含其他资料. 协议 本地协议 HTTP协议 SSH协 ...

  5. Git 基础知识 - 获取 Git 存储库

    Git 基础知识 - 获取 Git 存储库 获取 Git 存储库 初始化现有目录中的存储库 克隆现有存储库 如果你只能读一章来开始使用 Git,就是这样.本章涵盖了你完成绝大多数事情所需的基本命令,这 ...

  6. 关于码云的一些基本知识_快速掌握Git命令基础知识 进阶必备哦

    最近在头条工作之余,遇到Git上面一些问题,趁这次的机会,补一补Git基础知识,纯属个人学习笔记,单纯简单,针对性强,如果对你有帮助那将是对我最大的鼓励,闲话不多说,立即进入正题,和我一起徜徉在Git ...

  7. Git基础知识与常用命令

    一:相关概念: 1:工作区(Working Directory): 就是你在电脑里能看到的目录 2:版本库(Repository): 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. ...

  8. Git 基础知识 - 标记tag

    标记 列出您的标签 创建标签 带注释的标签 轻量级标签 稍后标记 共享标签 删除标签 签出标签 像大多数VCS一样,Git能够将存储库历史记录中的特定点标记为重要.通常,人们使用此功能来标记发布点(等 ...

  9. Git 基础知识--分支操作

    分支操作 几乎所有的版本控制系统都支持分支.使用分支意味着你可以把你的工作从开发主线上分离出来,以免影响开发主线. 在分支中,在基于主分支已有代码的基础上,你可以进行任意的操作,并且完全不用担心会污染 ...

最新文章

  1. php执行删除语句代码,ThinkPHP之数据删除和执行原生SQL语句
  2. 安装sql server 2008 报错
  3. 在Laravel中使用Middleware进行身份验证
  4. 容器编排技术 -- kubeadm 实现细节
  5. 交换机命令行配置与VLAN
  6. oracle 分析函数_数据分析系列笔试题(6)
  7. JAVA的节点流和处理流
  8. python软件测试工程师岗位多_软件测试工程师常见的17道Python面试题【多测师_王sir】...
  9. Unity3D资源热更新(一)
  10. Excel如何快速根据身份证号码计算周岁?
  11. 基于MATLAB的车牌识别实现
  12. UI-平面构成-ai-快捷键-1
  13. JavaScript:九九乘法表
  14. 树莓派3B 之IIC通信
  15. 学习Python的入门建议及资料分享
  16. Open vSwitch系列实验(二):Open vSwitch的GRE隧道实验网络
  17. 暗黑破坏神2中的符文系统,一共有多少个符文,可以介绍其中1个符文组合吗?...
  18. 279. 完全平方数 (数学定理 四平方数之和定理)
  19. 第四周-圆柱体的表面积
  20. DLL文件是什么东东?

热门文章

  1. Keil(MDK-ARM-STM32)系列教程(二)工具栏详细说明
  2. 【原创源码】(05):C#-计算绝对路径。
  3. [19/06/07-星期五] CSS基础_布局定位背景样式
  4. @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 注解的作用
  5. css选择器位置和数量技巧
  6. 基于java mail实现简单的QQ邮箱发送邮件
  7. ASP.NET文件夹
  8. 大屏数据可视化解决方案(上)
  9. (转) RabbitMQ学习之发布/订阅(java)
  10. (转)Arcgis for JS实现台风运动路径与影像范围的显示