Git - 时光机穿梭之管理修改
现在,假定你已经完全掌握了暂存区的概念。下面,我们要讨论的就是,为什么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 add
再git commit
,也可以别着急提交第一次修改,先git add
第二次修改,再git commit
,就相当于把两次修改合并后一块提交了:
第一次修改 -> git add
-> 第二次修改 -> git add
-> git commit
好,现在,把第二次修改提交了,然后开始小结。
小结
现在,你又理解了Git是如何跟踪修改的,每次修改,如果不用git add
到暂存区,那就不会加入到commit
中。
Git - 时光机穿梭之管理修改相关推荐
- 时光机穿梭(管理修改)
管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就 ...
- Git 时光穿梭鸡 管理修改
Git跟踪并管理的是修改,而非文件. 什么是修改? 比如你新增了一行,这就是一个修改, 删除了一行,也是一个修改, 更改了某些字符,也是一个修改, 删了一些又加了一些,也是一个修改, 甚至创建一个新文 ...
- Git - 时光机穿梭
我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...
- Git教学资源,安装,关联账号,创建/关联/克隆库,版本回退,管理修改基本指令
Git基本指令 教学资源推荐 (入门)Git教程-廖雪峰的官方网站 https://www.liaoxuefeng.com/wiki/896043488029600 (进阶)Pro Git(中文版) ...
- git的使用学习(三)时光机穿梭
1.版本回退 现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control ...
- git学习之时光机穿梭(四)
时光机穿梭 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed ver ...
- Git《二》时光机穿梭
Git<二>时光机穿梭 零. 目录 时光机 版本回退 工作区和暂存区 管理修改 撤销修改 删除文件 总结 一. 时光机 我们已经成功地添加并提交了一个readme.txt文件,现在,是时候 ...
- Git简单操作之时光机穿梭
时光机穿梭 我们已经成功添加并提交了一个readme.txt文件,于是我们继续修改成如下内容: 现在运行git status命令查看结果: git status命令可以让我们时刻掌握仓库当前的状态,上 ...
- 3.git版本控制-管理修改、撤销、删除
管理修改 第一次修改 -> git add -> 第二次修改 -> git commit,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交, ...
最新文章
- php代码审计工具_【学习笔记】PHP代码审计入门:代码审计实例2
- swoole学习(一)----linux安装swoole
- python—多进程之进程的创建(一)
- 【福利派送】浪漫七夕,不可辜负!这 8 份礼物请收下!
- 男人必看,男性排毒同样重要 - 生活至上,美容至尚!
- Boost:以协程的方式实现带有默认值的echo服务器的实例
- scala类型推断及库方法设计原则和==与java有何差别
- range python命令_Python学习笔记(一)
- 愚弄dnn_不要被泛型和向后兼容性所愚弄。 使用泛型类型
- p批处理替换目录下文本中的字符串
- Win7,Win8下多实例运行Excel2010
- wamp惯用的php框架_wamp集成环境php多版本搭建(php5.5,php5.6,php7.0.6)
- ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别
- 《掌握需求过程》读书笔记3
- 电容式 触摸按键 原理
- python 读取地震道头数据_[宜配屋]听图阁
- 蓝桥杯试题 算法提高 学霸的迷宫
- 【转】Android Hook框架Xposed详解
- AI大牛李沐装机视频来了!你也能练100亿的大模型
- Kinect v2.0原理介绍之十三:面部帧获取