【Git】git add

源站: 老姜博客 Git讲之git add

git add用来将working directory的改动状态改变到Staging阶段.

命令格式: git add fileA ...

$ echo "ABC" > README.txt # 生成一个新文件
$ git add README.txt # git add操作
warning: LF will be replaced by CRLF in README.txt.
The file will have its original line endings in your working directory
$ git status # 查看Working Directory和Staging区域的改动情况
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   README.txt
#从上面的输出内容可以了解到,git status清晰的提示 当前没有commit
#同时提示如果提交,如下的改动内容将会被提交(new file: README.txt)
#另外提示可以将当前staging区域的文件转化到Working Directory,命令格式是: git rm --cached <file> ...

git add命令将转义到Staging区域的文件会保存到Git的objects目录下.

$ ls .git/objects/ # git add 命令执行后,会将文件内容保存到objects目录下,注意它通过hash计算的值生成二级目录接口,参见如下:
5d/  info/  pack/
$ ls .git/objects/5d/a849b5c6f00b5292b1a823b29ceb303e98585c
.git/objects/5d/a849b5c6f00b5292b1a823b29ceb303e98585c
$ git cat-file -t 5da849b5c6f00b5292b1a823b29ceb303e98585c # git cat-file -t [hash-code] 可以用来查看objects存放对象的类型
blob  
$ git cat-file -p 5da849b5c6f00b5292b1a823b29ceb303e98585c # git cat-file -p [hash-code] 可以用来查看objects存放的内容
ABC 

objects目录下面可能存在如下四种类型的对象:

  • blob: 用来存储单个文件的内容
  • tree: 一个tree对象保存的内容主要是指向其他的blob或者子tree对象
  • commit: 用来存放commit的相关信息,包含提交人、指向的tree对象
  • tag: 相当于一个标签,主要用来便于指向特定的commit对象.

以上四种类别的对象共同来组成完成的git tree,所有的git 命令操作都是围绕整个树的处理,可以通过如下的图了解各个类型的组合关系:

在这里插入图片描述

git add:命令执行的结果是创建一个新的blob类别节点,但是此时blob对象并没有被其他tree对象关联,相当于处于游离态的,需要我们进一步使用git commit将其关联到整个git tree上,赶紧去了解下一节内容吧

git中保存文件的历史改动记录,并不是通过diff文件来完成的,而是保存新的文件的完整内容,这样对于日常开发普通程序源文件而已其实没有很大的影响,但是如果里面保存一些具有二进制格式的文件,可能影响就比较大了,比如excel模板,word格式的接口文档.

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值