Git简明教程--4.文件添加和版本提交到本地仓库

1.跟踪新文件

首先要了解的是,所有新创建或添加到工作目录(working dirctory)的文件,都是未被跟踪的,也就是说此时Git认为他们并不是自己所管理的文件

我们在Git仓库中新建一个文件,然后使用 git status命令,可以要确定哪些文件当前处于什么状态。

这里写图片描述

可以看到此时新建文件并没有被Git追踪(Untracked)

git add fileName

我们需要使用以上命令将文件添加到Git的暂存区(staging area),这时候文件就开始被Git追踪,也就是说文件以后的变化会被Git发现并指出,文件也就可以被保存到Git版本库中(以快照的形式)。

这里写图片描述

可以看到此时新建的文件已经被追踪(未被提交状态)

也就是说,git add 命令将文件添加进了暂存区后,文件就已经被Git追踪了。

这里写图片描述

已经被Git追踪的文件,我们就可以查看它在Git内部的状态

这里写图片描述

可以看到我新建了文件newFile2,然后使用git add 命令将其添加进暂存区,此时Git已经对其开始追踪,然后再使用git status查看文件状态,发现它处于修改(modified)状态。

2.修改(更新)文件

使用git status 命令查看文件状态,发现有修改后没有存入暂存区的文件(也就是说工作目录和暂存区存在不一致文件)

这里写图片描述

我们可以使用git add fileName 将更新后的文件添加进暂存区

3.提交文件(提交到Git版本仓库)

现在的暂存区域已经准备妥当可以提交了。在此之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了,然后再运行提交命令 git commit

$ git commit

这种方式会启动文本编辑器以便输入本次提交的说明。默认会启用 shell 的环境变量 $EDITOR 所指定的软件,一般都是 vim 或 emacs。

这里写图片描述

可以看到,默认的提交消息包含最后一次运行 git status 的输出,放在注释行里,另外开头还有一空行,供你输入提交说明。你完全可以去掉这些注释行,不过留着也没关系,多少能帮你回想起这次更新的内容有哪些。(如果觉得这还不够,可以用 -v 选项将修改差异的每一行都包含到注释中来。)退出编辑器时,Git 会丢掉注释行,将说明内容和本次更新提交到仓库。

另外也可以用 -m 参数后跟提交说明的方式,在一行命令中提交更新:

这里写图片描述

记住,提交时记录的是放在暂存区域的快照,任何还未暂存的仍然保持已修改状态,可以在下次提交时纳入版本管理。每一次运行提交操作,都是对你项目作一次快照,以后可以回到这个状态,或者进行比较。

4.查看版本更新信息

使用git commit 命令以后,Git就会把暂存区的文件全部提交到Git版本仓库(Repository)

这里写图片描述

我们使用:

git log 

可以查看commit以后的版本更新信息

这里写图片描述

可以看到commit -m 的信息被记录下来,其中包括版本快照的校验和,发布者信息和提交更新的时间。

最后我想补充一下Git中快照存储模型(看不懂也没关系,不影响Git的使用)

这里写图片描述

当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录(本例中就是项目根目录)的校验和,然后在 Git 仓库中将这些目录保存为树(tree)对象。之后 Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象(项目根目录)的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。

我们在 git log中看到的e27……就是指向树对象(tree)的一个版本快照对象(commit)的校验和,而版本中每个文件(目录)也会被记录成一个blob对象然后树对象(tree)的指针指向这些对象,实现文件的快照存储。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值