Git入门学习笔记
Git入门学习笔记
·
一、Git 的安装
- 下载地址:Git - Downloading Package
- 安装过程,默认下一步即可。
- 安装完成后,鼠标右键会出现Git Bash和Git GUI。
二、Git 初始化配置
- 通过 Git bash Here 打开终端窗口,git --version 命令可以查看 git 版本信息。
- Git 提供了一个叫做 git config 的命令来配置或读取相应的工作环境变量。
这些变量可以存放 在以下三个不同的地方:
/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。 ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。 .git/config 文件 :当前项目的 Git 目录中的配置文件(也就是工作目录 中的 .git/config 文件)这里的配置仅仅针 对当前项目有效。- 每一个级别的配置都会覆盖上层的相同配置。
用户信息的配置:
- 第一个要配置的是你个人的用户名称和电子邮件地址。
- 这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新。
git config --global user.name "damu" git config --global user.email damu@example.com
- 要检查已有的配置信息,可以使用 git config --list 命令。
- 删除配置信息
git config --global --unset user.name
三、Git 的三个区域
Git本地有三个工作区域:
Workspace
:工作区,就是你平时存放项目代码的地方;
Index / Stage
:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表的信息,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);
Repository
:版本库(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。如果在加上远程的 git 仓库(Remote Directory)就可以分为四个工作区域。
Remote
:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换;文件在这四个区域之间的转换关系如下:
四、初始化新仓库
命令:git init
解析:
- 要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录,执行:git init。
作用:
- 初始化后,在当前目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
- 不过目前,仅仅是按照既有的结构框架初始化好了里边所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。
.git 目录:
- hooks:目录包含客户端或服务端的钩子脚本;
- info:包含一个全局性排除文件;
- logs:保存日志信息;
- objects:目录存储所有数据内容;
- refs:目录存储指向数据的提交对象的指针(分支);
- config:文件包含项目特有的配置选项;
- description:用来显示对仓库的描述信息;
- HEAD:文件指示目前被检出的分支;
- index:文件保存暂存区信息;
五、Git底层命令
1. git 对象
- Git 的核心部分是一个简单的键值对数据库。
- 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索该内容。
1.1 向数据库写入内容并返回对应键值
命令:
echo 'test content' | git hash-object -w --stdin
- 管道命令 “|”,作用就是将前一个命令的输出作为后一个命令的输入。
- hash-object :将输入内容转化为 blob 类型的 hash 键值对。
- -w 选项指示 hash-object 命令存储数据对象;若不指定此选项,则该命令仅返回对应的键值。
--stdin ( standard input )选项则指示该命令从标准输入读取内容; 若不指定此选项,则须在命令尾部给出待存储文件的路径。git hash-object -w 文件路径
返回:
- 该命令输出一个长度为 40 个字符的校验和。 这是一个 SHA-1 哈希值。
1.2 查看 Git 是如何存储数据
命令:
find .git/objects -type f
返回:
- 这就是开始时 Git 存储内容的方式:一个文件对应一条内容。
- 校验和的前两个字符用于命名子目录,余下的 38 个字符则用作文件名。
1.3 根据键值拉取数据
命令:
git cat-file -p f62bc814852d91bf21d66ad54472edad9f882729
- -p 选项可指示该命令自动判断内容的类型,并为我们显示格式友好的内容。
返回:
- 对应文件的内容。
补充:-t 选项可以让 Git 告诉我们其内部存储的任何对象类型。
1.4 对一个新文件进行简单的版本控制
- 创建一个新文件并将其内容存入数据库
echo 'wyh v1' > test.txt git hash-object -w test.txt
向文件里写入新内容,并再次将其存入数据库echo 'wyh v2' > test.txt git hash-object -w test.txt
- 查看数据库内容
find .git/objects -type f
问题:
- 记住文件的每一个版本所对应的 SHA-1 值并不现实。
- 在 Git 中,文件名并没有被保存——我们仅保存了文件的内容。
解决方案:树对象
2. 树对象
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献1条内容
所有评论(0)