【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 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相关推荐
- 【Git】git使用 - 各种常用场景命令解决
(多看git中的各种帮助-h/--help,可能有你想要的命令) 1.分支的创建和切换 创建 >>>> git branch branchName 切换分支 >>& ...
- 【Git】Git 分支管理 ( 解决分支合并冲突 | 本地处理文件冲突 )
文章目录 一.本地处理文件冲突 一.本地处理文件冲突 在下面的 [Git]Git 分支管理 ( 解决分支合并冲突 | 创建并切换分支 git switch -c feature1 | 修改 featu ...
- 【git】git忽略文件 取消忽略文件
[git]git忽略文件 取消忽略文件 一.git忽略文件 (一)通常操作 忽略成功后会出现灰色图标 git根目录下有一个.gitignore文件,被忽略的文件全部会添加到里面 相关过滤规则举例说明: ...
- 【git】git操作命令和相关脚本
目录 git clone git checkout git diff git add git pull --rebase git pull git fetch git reset git stash ...
- 【git】git命令和相关脚本
目录 git clone git checkout git diff git add git pull --rebase git pull git fetch git reset git stash ...
- 【Gitlab】GIT回滚master分支到指定tag版本 并提交远程仓库
[Gitlab]GIT回滚master分支到指定tag版本 并提交远程仓库 1 查看分支 git branch 2 切换到master分支 git checkout master 3 查看标签 git ...
- 【git】git 使用 Submodule 管理子模块 报错 pathspec did not match any files
本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 文章目录 1.概述 1.概述 本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经 ...
- 【经验之谈】Git使用之TortoiseGit配置VS详解
2019独角兽企业重金招聘Python工程师标准>>> [经验之谈]Git使用之TortoiseGit配置VS详解 转载于:https://my.oschina.net/u/1416 ...
- 【Git】Git获取Commit修改文件列表
Git获取Commit修改文件列表 获得Git本次Commit修改的文件 #!/bin/bash# 命令格式 # 会列出compare2与compare1的不同. # git diff --name- ...
- 【记录】git error:bad signature 解决方法
[记录]git error:bad signature 解决方法 参考文章: (1)[记录]git error:bad signature 解决方法 (2)https://www.cnblogs.co ...
最新文章
- Android短信拦截2019,关于征集2019年度信息科学领域重大项目立项建议的通告
- 【Python】青少年蓝桥杯_每日一题_6.11_打印星号
- jquery在thymeleaf循环的按钮元素中不能直接用id选择器
- 夏普linux掌上电脑,夏普展示Ubuntu系统NetWalker PC-Z1[图文]
- 暴跌300亿,“撤离”中国!乔布斯12年前憋的大招,又把一个巨头逼下神坛
- Android studio 2.3版本出现的问题: Please select at least one of the signature versions to use
- ldirectord实现高可用负载集群
- 删除某个字段_Android中Room的使用4_删除一个字段
- 初探 vue 插件开发
- WPF中MVVM模式(简略介绍)
- git cherry-pick合并某个commit
- 世界超级计算机比赛,【启明之星】何斌:刷新超级计算机比赛世界纪录
- eplan图纸怎么发给别人_如何保护你的EPLAN图纸
- 两个向量的夹角公式_两向量夹角(求两个向量的夹角公式)
- u深度重装系统详细教程_u深度u盘装系统教程 u深度u盘装系统步骤
- 深度学习-浅层神经网络
- HashData:守护数据安全 筑牢数字经济底座
- EasyUI 日历实现日程提醒
- Android 隐藏/透明小白条
- Android酷炫音乐律动动效部署到Maven仓库
热门文章
- Spinner的用法(转)
- 《获取Windows中的当前时区列表》
- 社会经济学中的因果分析思想初探
- 递归函数的例子python卖鸭子_递归算法实现卖鸭子
- 基于区块链的融合通信初探(一)
- 世界各国国家货币代码大全[收藏]
- esxi 环境 西数硬盘测试软件,手把手教你测试固态硬盘!硬盘测试软件大汇总
- (已拿offer)腾讯实习生笔试到面试总结(附带华为阿里面试经历)
- python自动化测试必备知识_2018教你应对Python移动自动化测试面试 面试分析 知识理论 面试技巧...
- 【锋迷商城】01数据库设计