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

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

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

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes.

然后,添加:

$ git add readme.txt
$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   readme.txt
#

然后,再修改readme.txt:

$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.
Git has a mutable index called stage.
Git tracks changes of files.

提交:

$ git commit -m "git tracks changes"
[master 519219b] git tracks changes1 file changed, 1 insertion(+)

提交后,再看看状态:

$ git status
On branch master
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git checkout -- <file>..." to discard changes in working directory)modified:   readme.txtno 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命令可以查看工作区和版本库里面最新版本的区别:

$ git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index 76d770f..a9c5755 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,4 +1,4 @@Git is a distributed version control system.Git is free software distributed under the GPL.Git has a mutable index called stage.
-Git tracks changes.
+Git tracks changes of files.

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

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

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

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

小结

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

Git - 时光机穿梭之管理修改相关推荐

  1. 时光机穿梭(管理修改)

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

  2. Git 时光穿梭鸡 管理修改

    Git跟踪并管理的是修改,而非文件. 什么是修改? 比如你新增了一行,这就是一个修改, 删除了一行,也是一个修改, 更改了某些字符,也是一个修改, 删了一些又加了一些,也是一个修改, 甚至创建一个新文 ...

  3. Git - 时光机穿梭

    我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...

  4. Git教学资源,安装,关联账号,创建/关联/克隆库,版本回退,管理修改基本指令

    Git基本指令 教学资源推荐 (入门)Git教程-廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/896043488029600 (进阶)Pro Git(中文版) ...

  5. git的使用学习(三)时光机穿梭

    1.版本回退 现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control ...

  6. git学习之时光机穿梭(四)

    时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ver ...

  7. Git《二》时光机穿梭

    Git<二>时光机穿梭 零. 目录 时光机 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 总结 一. 时光机 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候 ...

  8. Git简单操作之时光机穿梭

    时光机穿梭 我们已经成功添加并提交了一个readme.txt文件,于是我们继续修改成如下内容: 现在运行git status命令查看结果: git status命令可以让我们时刻掌握仓库当前的状态,上 ...

  9. 3.git版本控制-管理修改、撤销、删除

    管理修改 第一次修改 -> git add -> 第二次修改 -> git commit,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交, ...

最新文章

  1. php代码审计工具_【学习笔记】PHP代码审计入门:代码审计实例2
  2. swoole学习(一)----linux安装swoole
  3. python—多进程之进程的创建(一)
  4. 【福利派送】浪漫七夕,不可辜负!这 8 份礼物请收下!
  5. 男人必看,男性排毒同样重要 - 生活至上,美容至尚!
  6. Boost:以协程的方式实现带有默认值的echo服务器的实例
  7. scala类型推断及库方法设计原则和==与java有何差别
  8. range python命令_Python学习笔记(一)
  9. 愚弄dnn_不要被泛型和向后兼容性所愚弄。 使用泛型类型
  10. p批处理替换目录下文本中的字符串
  11. Win7,Win8下多实例运行Excel2010
  12. wamp惯用的php框架_wamp集成环境php多版本搭建(php5.5,php5.6,php7.0.6)
  13. ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别
  14. 《掌握需求过程》读书笔记3
  15. 电容式 触摸按键 原理
  16. python 读取地震道头数据_[宜配屋]听图阁
  17. 蓝桥杯试题 算法提高 学霸的迷宫
  18. 【转】Android Hook框架Xposed详解
  19. AI大牛李沐装机视频来了!你也能练100亿的大模型
  20. Kinect v2.0原理介绍之十三:面部帧获取

热门文章

  1. vimplus设置文件头(作者信息)
  2. 这位闯进程序员界的维密天使,她到底可以编出什么?
  3. PHP入门-数组的定义与使用
  4. Linux-MongoDB命令导入json
  5. openoffice将txt文本转pdf中文乱码
  6. mycat mysql 性能测试_mycat读写分离性能测试
  7. 视频重复播放不用流量html,一个快速突破短视频500播放量的玩法,纯原创!
  8. 为什么拿相机对着电脑屏幕照相,照片会出现波纹?
  9. python数据分布_Python matplotlib 数据分布
  10. pip常用命令以及升级方法