目录
一.初识git
二.git的安装
三.初始化/创建本地仓库
四.配置用户设置/配置本地仓库
五.认识工作区、暂存区、版本库
六.添加文件__场景一
七.查看 .git 文件/添加到本地仓库后.git中发生的变化
1.执行git add后的变化
index文件(暂存区)
logs/HEAD文件
2.执行git commit后的变化
refs/heads/master
Objects目录
logs/HEAD文件
一.初识git
类似于qq在线文档,office里查看历史版本,Git 是一个分布式版本控制系统,用于追踪代码的变化,协作开发,并能轻松管理不同版本的代码。能像qq在线文档一样,大型多人在线编辑,office里的历史版本,可以随时回滚,对于文本文件能直接告诉你哪里发生了改动,二进制文件如图片告诉你大概的变化。
二.git的安装
1.Windows(x64): Git-2.47.1-64-bit.exe
2.Ubuntu: apt-get install git
3.macOs: brew install git
三.初始化/创建本地仓库
git init
创建这个词便于理解,初始化才是本质。我们知道我们想要将什么放进我们的github/gitee,但计算机其实不知道,初始化其实就相当于圈了一块地,告诉计算机,将这些推送到github/gitee。
同时会生成一个.git的隐藏文件,也就是真正的本地仓库,版本库,注意尤其不允许在.git下手动修改,否则可能导致该仓库用不了
四.配置用户设置/配置本地仓库
一般配置为
git config --global user.name "xxx"
git config --global email "666666@xxxx.com"
检查其是否配置成功,只需
git config -l// 若出现下列代码,则表示配置成功
// user.name=xxx
// user.email=666666@xxx.com
我们的配置一般为全局配置,全局配置是指本地的所有仓库默认都采取这种用户配置,如果不采取全局配置,只需要去掉--global
git config user.name "xxx"
git config email "666666@xxxx.com"
最后,如果我们换一种配置,直接输,系统会直接覆盖,若们就是想取消所有配置,则输入以下代码,注意全局配置和局部配置不一样,有没有取消成功,再git config -l查看即可。
// 全局设置
git config --global --unset user.name
git config --global --unset user.email// 局部配置
git config --unset user.name
git config --unset user.email
五.认识工作区、暂存区、版本库
如图所示,这是在window系统中工作区,暂存区,版本库的大致分布及一些原理。
当我们git init一个仓库时,在里面添加文件,git是不能直接管理的,因为他处于工作区中。我们需要用git add .命令将其推送到.git文件所在的版本库中,实际上是stage暂存区(索引)中。这时仍然没有添加到本地仓库中,需要使用git commit -m ‘xxx’命令将其推向HEAD指向的master中,这样就算完成了。
无论是stage暂存区还是master中,存放的都是索引,具体的文件管理是在objects文件中,修改的工作内容会写入对象的一个新的git对象中
六.添加文件__场景一
// 将文件从工作区添加到暂存区,有两种办法
git add . // 会将所有修改的文件添加到暂存区
git add <file> // 只会将file文件添加到暂存区,可同时添加多个// 将问件从暂存区推向master
git commit -m ‘xxxx’ //xxxx最好填写其主要变化内容,方便后续管理 // 检查推送状态
git status// 查看推送日志
git log// 显示如下信息// commit 1f458c82d3760f5db667167b742c5972e7904a97 (HEAD -> master)// Author: user.name <user.email>// Date: Mon Dec 16 22:12:31 2024 +0800// <file>
//如果认为太长,也可以一行输出
git log --pretty=oneline// 显示如下信息// 1f458c82d3760f5db667167b742c5972e7904a97 (HEAD -> master) <file>
其中commit ID是根据哈希值整出来的独一无二的,我们是通过这个进行版本的控制,每一次add操作都会想我们展示一些变化的细节,如推送了什么文件,文本文件,增加了多少行,减少了多少行之类的。
我们对单独提交文件还需注意如下几点
git add file1
git add file2
git commit -m 'text'
这样只会将file2推送到本地仓库file1不会,因为暂存区,毕竟是暂存区
此时要么add一次,commit一次
要么git add file1 file2,再commit
要么直接git add . ,然后再commit
七.查看 .git 文件/添加到本地仓库后.git中发生的变化
1.执行git add后的变化
index文件(暂存区)
记录当前暂存区的所有文件信息(包括文件的路径、修改状态和哈希值)。注意:index
文件是二进制格式,你通常不能直接查看其内容。
logs/HEAD文件
logs/HEAD会记录你最近的操作,尤其是指针的变化。例如,git add 后,你可以看到这个文件记录了 HEAD(当前分支)的操作记录。当前将HEAD用记事本打开,则是以下内容
// master文件所在路径
ref: refs/heads/master
2.执行git commit后的变化
refs/heads/master
将master用记事本打开,可以清楚地看到,master中记录的是git commit后最新的哈希值
Objects目录
通过哈希值查看内容不再能使用记事本,需要用到下列命令
git cat-file -p <哈希值>
我们可以看到通过master中的哈希值,我们能得到tree(提交的整个树的节点),parent(上一个节点),和提交者的信息。通过再次检索tree,我们能得到其根目录,然后检索我们README.txt文件的哈希值,我们就能看到我们操作的具体变化。
因此,修改的工作区内容会写入到对象库的一个新的git对象中。
logs/HEAD文件
logs/HEAD记录了你最新的提交操作。例如,在执行git commit后,logs/HEAD会记录这一操作的详细信息,包含提交的哈希值、提交人、日期等信息。