git add 命令详解

这篇具有很好参考价值的文章主要介绍了git add 命令详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言
2. git add 基本操作
3. git add 命令参数
4. git add 背后做了什么

1. 前言


众所周知,git 中有工作区、暂存区、版本库三大组成部分

工作区: 电脑中能看到的目录,也就是写代码的地方

暂存区: 英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件中,暂存区有时也叫做索引

版本库: 在工作区中有一个隐藏目录 .git,这个不算工作区,而是 git 的版本库

2. git add 基本操作


add 命令的作用就是将工作区的文件添加到暂存区

使用示例

 
  1. # 将某些文件提交到暂存区
  2. git add <file1> <file2>
  3. # 将某些目录提交到暂存区
  4. git add <folder1> <folder2>

3. git add 命令参数


-A, --all add changes from all tracked and untracked files 添加所有跟踪和未跟踪文件的更改

-A 参数会监控工作区的状态树,它会把工作区的所有变化提交到暂存区,包括修改(modified)、新文件(Untracked files)、删除的文件(deleted)。使用 . 在 git 2.x 也可以达到一样的效果,但在 git 1.x 中不同的是 . 不会监控删除的文件

在 git2.x 中,下面两种用法的效果完全相同

 
  1. git add .
  2. git add -A

-u, --update update tracked files 只更新已被跟踪文件

只监控已经被 add 的文件,也就是 tracked files,不会监控没有被跟踪的新文件

 
  1. git add -u

git add,编程笔记,git,github

4. git add 背后做了什么


先说结论: git add 会在 .git/objects 目录下面创建一个目录和文件,并且在 .git/index 文件中添加一行内容

这里会说到 git cat-file 命令,虽然平时不怎么用,但是它能帮助我们理解 git add 背后到底做了什么

创建一个 git 仓库,用于查看 git add 背后做了什么操作

 
  1. $ git init
  2. $ echo 'hello git' >> 1.txt
  3. $ git add 1.txt
  4. $ .git/objects
  5. ├── 8d
  6. │ └── 0e41234f24b6da002d962a26c2495ea16a425f
  7. ├── info
  8. └── pack

执行 git add 后:

1、git 会将工作区中的文件使用 hash sha-1 算法得到 40 位的 blob 对象 hash 字符串文件,文件中存储的是文件类型和使用算法压缩后的内容,如果查看文件的原始内容,需要使用 git cat-file -p <hash>。这个文件存放在 .git/objects 目录下

git add,编程笔记,git,github

 

2、git 会在 .git/index 文件中增加一行内容,就是 hash 值对应的文件名。此时就实现了文件名和内容相对应的操作

 
  1. # 查看暂存区中的文件名
  2. git ls-files
  3. # 查看暂存区中的文件更多信息
  4. git ls-files -s

100644 指的是文件权限,hash 字符串对应 .git/objects 目录下的文件

git add,编程笔记,git,github

查看 hash 文件

 
  1. # 查看文件类型
  2. git cat-file -t <hash>
  3. # 查看文件内容
  4. git cat-file -p <hash>
  5. # 使用示例
  6. git cat-file -t 8d0e412
  7. git cat-file -p 8d0e412

git cat-file -t 查看文件类型的返回值文章来源地址https://www.toymoban.com/news/detail-789006.html

类型 描述
blob 存储的是工作区文件的内容
tree 工作树
commit 提交记录信息以及工作树

到了这里,关于git add 命令详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git 撤销add/commit,以及更换源命令

    前言:主要是为了自己方便记录,省的每次都查找一下这些命令 1、当我们只是想撤回commit,保留 add . 的时候,可以用下方代码 2、当我们想撤回commit以及add .的时候,可以用下方代码  注意:reset 命令只能回滚最新的提交,无法满足保留最后一次提交只回滚之前的某次提交。

    2024年02月05日
    浏览(37)
  • 【git 实用指南】git 增加 本地代码 git add 相关命令和复杂情况需求

    Git(分布式版本控制系统)是一个开源的版本控制系统,用于追踪文件和目录的更改。Git不仅仅是一个备份系统,它也允许多人协作。这让我想到了Bjarne Stroustrup(C++之父)的名言:“C++是为解决实际问题而设计的”。Git也是这样,它为解决现实世界中版本控制的复杂问题而

    2024年02月04日
    浏览(37)
  • Git学习笔记:1 基础命令详解

    git commit 用法: git commit -m \\\"commit message\\\" 功能:将暂存区(stage)中的所有更改提交到本地仓库的当前分支,同时提供一个简短的提交信息。 参数: -m :后跟提交消息,用于描述这次提交所做的改动。 -a :自动将所有已跟踪且已经修改过的文件添加到暂存区并提交。 -s 或 -

    2024年01月24日
    浏览(33)
  • git remote add origin详解

     git remote add origin详解_笔记大全_设计学院 使用“git remote add origin”指令,可以轻松地将本地项目连接到远程Git仓库 “git remote add origin”指令可以使用以下语法: 其中,远程Git仓库地址是你的远程Git仓库的网址。 对于如何获取远程Git仓库地址,我们举例说明: 比如,你的远

    2024年02月14日
    浏览(40)
  • 【Git】解决‘每次初始化一个新仓库时,都需要执行git config --global --add safe.directory命令‘

    这个命令是用来将一个安全目录添加到全局的 Git 配置中。但每次克隆一个仓库或者新建一个仓库,并且对该仓库进行操作时,都需要执行该命令,十分麻烦! 这是因为,Git 近期进行了版本升级,添加了新的目录安全限制。造成在进行git常规操作时无法发现.git文件。 方案一

    2024年04月08日
    浏览(47)
  • github, git, google: clang-前端插件-给各种无花括号的“块”加花括号-基于llvm15--clang-plugin-add-brace-----google镜像

    术语约定或备忘 case起止范围: 从冒号到下一个’case’开头, 简称有: case内 、case内容 Ast: Abstract syntax tree: 抽象语法树 没插入花括号的case 若case内, 以下任一条成立,则 跳过该case 即 不会对该case内容用花括号包裹. 有#define、 有#include、 有直属变量声明、 空case、 有宏调用

    2024年02月05日
    浏览(40)
  • git常用命令(git github ssh)

    被” “和\\\"[ ]“包含起来的内容表示用户自己选定的参数。但” “是要求用户必须输入的,而”[ ]\\\"表示用户可以根据自己的需要选择输入。 比如git reset的语法是这样的: 其中commitid指的是commit id,可以理解为每一提交到本地仓库之后该仓库状态的ID,利用这个ID我们可以快速

    2024年02月03日
    浏览(40)
  • 【Github】git clone命令下载文件中途停止

    使用git clone命令下载github上的源代码时,有时文件下载到一定百分比时就停止不动, 这是因为我们所下载的文件很大,超过了git预先分配的Postbuffer容量,所以一直卡在那里。可以使用以下命令查看当前Postbuffer的数值: 我们可以根据所下载文件的容量来设置Postbuffer的数值。

    2024年02月04日
    浏览(41)
  • Git和Github操作命令及关联远程库

    前言 一、Git 1. 环境配置 2. 基本操作 3. 版本切换 4. 忽略文件 5. 分支 6. 命令行 --tag 7. 查看远程 8. 添加/移除远程仓库 9. 从远程仓库获取代码 二、Github/Gitee 1. 在Github/Gitee中创建一个空的库 2. 创建ssh密钥 3. 查看ssh密钥 4. github设置密钥 5. 绑定github 6. 绑定远程仓库 7. 查看

    2024年04月15日
    浏览(29)
  • Git:国内用命令行访问GitHub的方法

    如果你是Linux或Mac系统,那么可以通过命令 sudo vim /etc/hosts 打开Hosts文件,并加入以下内容: 接着,如果你是Linux系统,则运行命令: 如果你是Mac系统,则运行命令: 如果你已经拥有了网络代理服务(具体怎么拥有就大家各显神通了哈哈),那么我们可以在此基础上配置终端

    2023年04月11日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包