前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >git add 命令详解

git add 命令详解

作者头像
很酷的站长
发布2022-12-19 15:34:55
8500
发布2022-12-19 15:34:55
举报
文章被收录于专栏:站长的编程笔记

1. 前言

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

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

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

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

2. git add 基本操作

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

使用示例

代码语言:javascript
复制
# 将某些文件提交到暂存区
git add <file1> <file2>
# 将某些目录提交到暂存区
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 中,下面两种用法的效果完全相同

代码语言:javascript
复制
git add .
git add -A

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

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

代码语言:javascript
复制
git add -u
4. git add 背后做了什么

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

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

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

代码语言:javascript
复制
$ git init
$ echo 'hello git' >> 1.txt
$ git add 1.txt
$ .git/objects
├── 8d
│   └── 0e41234f24b6da002d962a26c2495ea16a425f
├── info
└── pack

执行 git add 后:

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

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

代码语言:javascript
复制
# 查看暂存区中的文件名
git ls-files
# 查看暂存区中的文件更多信息
git ls-files -s

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

查看 hash 文件

代码语言:javascript
复制
# 查看文件类型
git cat-file -t <hash>
# 查看文件内容
git cat-file -p <hash>
# 使用示例
git cat-file -t 8d0e412
git cat-file -p 8d0e412

git cat-file -t 查看文件类型的返回值

类型

描述

blob

存储的是工作区文件的内容

tree

工作树

commit

提交记录信息以及工作树

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. git add 基本操作
  • 3. git add 命令参数
  • 4. git add 背后做了什么
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档