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 d4f25b6] git tracks changes
 1 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.txt
#
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命令可以查看工作区和版本库里面最新版本的区别:

$ 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是如何跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中。

时间: 2024-11-06 09:32:06

Git教程-管理修改的相关文章

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

管理修改 第一次修改 -> git add -> 第二次修改 -> git commit,Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交. 撤销修改 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file. 如:"git chec

2016/01/13开始学习git:管理修改、撤销修改

一.管理修改 第一次修改readme.txt       : 增加一行Git tracks changes. 添加readme.txt                :       git add readme.txt 第二次修改readme.txt        : 修改Git tracks changes.为Git tracks changes of files. 提交readme.txt                :     git commit -m "git tracks chan

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 of files. My stupid boss still

2017-03-10&lt;Git管理修改&gt;

Git管理修改 Git跟踪并管理的是修改,而非文件. 什么是修改? 比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 实验: 第一步,对readme.txt做一个修改,比如加一行内容:Git tracks changes. $ cat readme.txt Git is a distributed version control system. Git is free software

git(工作区,暂存区,管理修改,撤销修改,删除文件)

工作区和暂存区 984次阅读 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区: 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的

Git教程

本地测试git: http://lvwzhen.github.io/Git-Tutorial/ Git教程 每个机器都必须自报家门:你的名字和Email地址 $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]" 创建一个空目录 $ mkdir learngit $ cd learngit $ pwd /Users/michael

Git教程笔记

1Git基础说明 1.1Git与subversion的区别 Git只关注文件数据的整体内容是否发生改变,而不关心文件内容的具体差异 Git是分布式的版本控制系统,因此大多数的操作不需要网络环境 所有保存在Git数据库中的东西都是通过对内容的SHA-1计算的hash值作为索引而不是靠文件名 当把本地工作推送到服务器上时,Git必须服务器上的更新合并到本地后才能推送,而Subversion会在服务器端自动合并提交的更新 1.2Git文件状态变化表 对于任何文件,在Git内部只有三种状态:已提交(表示

使用GIT BASH管理多个远程代码库

使用GIT BASH管理多个远程代码库技术 maybe yes 发表于2015-01-15 13:11 原文链接 : http://blog.lmlphp.com/archives/62  来自 : LMLPHP后院 我的另一篇文章<GITHUB之GIT BASH使用教程>, 最近一段时间,百度等搜索引擎也带来了一些流量,看到有很多网友浏览,也有网友来过多次.这篇文章再做一些补充,关于如何使用 GIT 推送代码到多个远程代码库.使用场景:比如我们的项目同时放到了 GITHUB 和 GITOSC

Git教程(笔记)

看了廖雪峰写的教程,由浅入深,花了三天的时间学完了,做一下学习笔记吧 Git简介 Linus创建Linux之后为方便管理Linux代码,自己用C写了这个分布式版本控制系统.2008年的时候GitHub网站上线,为开源项目免费提供Git存储. 集中式vs分布式: 集中式版本控制系统,版本库存放在中央服务器,每个人用的都是自己的电脑,用的时候先从服务器上获得新版本,工作完了再推送给中央服务器.缺点是必须联网使用,效率低. 分布式版本控制系统,没有中央服务器,每个人的电脑都是一个完整的版本库,工作的时