源站: 老姜博客 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 masterNo commits yetChanges 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格式的接口文档.

【Git】git add相关推荐

  1. 【Git】git使用 - 各种常用场景命令解决

    (多看git中的各种帮助-h/--help,可能有你想要的命令) 1.分支的创建和切换 创建 >>>> git branch branchName 切换分支 >>& ...

  2. 【Git】Git 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )

    文章目录 一.本地处理文件冲突 一.本地处理文件冲突 在下面的 [Git]Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 featu ...

  3. 【git】git忽略文件 取消忽略文件

    [git]git忽略文件 取消忽略文件 一.git忽略文件 (一)通常操作 忽略成功后会出现灰色图标 git根目录下有一个.gitignore文件,被忽略的文件全部会添加到里面 相关过滤规则举例说明: ...

  4. 【git】git操作命令和相关脚本

    目录 git clone git checkout git diff git add git pull --rebase git pull git fetch git reset git stash ...

  5. 【git】git命令和相关脚本

    目录 git clone git checkout git diff git add git pull --rebase git pull git fetch git reset git stash ...

  6. 【Gitlab】GIT回滚master分支到指定tag版本 并提交远程仓库

    [Gitlab]GIT回滚master分支到指定tag版本 并提交远程仓库 1 查看分支 git branch 2 切换到master分支 git checkout master 3 查看标签 git ...

  7. 【git】git 使用 Submodule 管理子模块 报错 pathspec did not match any files

    本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 文章目录 1.概述 1.概述 本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经 ...

  8. 【经验之谈】Git使用之TortoiseGit配置VS详解

    2019独角兽企业重金招聘Python工程师标准>>> [经验之谈]Git使用之TortoiseGit配置VS详解 转载于:https://my.oschina.net/u/1416 ...

  9. 【Git】Git获取Commit修改文件列表

    Git获取Commit修改文件列表 获得Git本次Commit修改的文件 #!/bin/bash# 命令格式 # 会列出compare2与compare1的不同. # git diff --name- ...

  10. 【记录】git error:bad signature 解决方法

    [记录]git error:bad signature 解决方法 参考文章: (1)[记录]git error:bad signature 解决方法 (2)https://www.cnblogs.co ...

最新文章

  1. Android短信拦截2019,关于征集2019年度信息科学领域重大项目立项建议的通告
  2. 【Python】青少年蓝桥杯_每日一题_6.11_打印星号
  3. jquery在thymeleaf循环的按钮元素中不能直接用id选择器
  4. 夏普linux掌上电脑,夏普展示Ubuntu系统NetWalker PC-Z1[图文]
  5. 暴跌300亿,“撤离”中国!乔布斯12年前憋的大招,又把一个巨头逼下神坛
  6. Android studio 2.3版本出现的问题: Please select at least one of the signature versions to use
  7. ldirectord实现高可用负载集群
  8. 删除某个字段_Android中Room的使用4_删除一个字段
  9. 初探 vue 插件开发
  10. WPF中MVVM模式(简略介绍)
  11. git cherry-pick合并某个commit
  12. 世界超级计算机比赛,【启明之星】何斌:刷新超级计算机比赛世界纪录
  13. eplan图纸怎么发给别人_如何保护你的EPLAN图纸
  14. 两个向量的夹角公式_两向量夹角(求两个向量的夹角公式)
  15. u深度重装系统详细教程_u深度u盘装系统教程 u深度u盘装系统步骤
  16. 深度学习-浅层神经网络
  17. HashData:守护数据安全 筑牢数字经济底座
  18. EasyUI 日历实现日程提醒
  19. Android 隐藏/透明小白条
  20. Android酷炫音乐律动动效部署到Maven仓库

热门文章

  1. Spinner的用法(转)
  2. 《获取Windows中的当前时区列表》
  3. 社会经济学中的因果分析思想初探
  4. 递归函数的例子python卖鸭子_递归算法实现卖鸭子
  5. 基于区块链的融合通信初探(一)
  6. 世界各国国家货币代码大全[收藏]
  7. esxi 环境 西数硬盘测试软件,手把手教你测试固态硬盘!硬盘测试软件大汇总
  8. (已拿offer)腾讯实习生笔试到面试总结(附带华为阿里面试经历)
  9. python自动化测试必备知识_2018教你应对Python移动自动化测试面试 面试分析 知识理论 面试技巧...
  10. 【锋迷商城】01数据库设计