git具有最优的存储能力,在没有远端git服务器的情况下,git本地就可以独立作为版本管控系统,这其中.git裸仓库中起了关键作用,那么我们一起来看看.git下都放了哪些文件。
打开Git Bash,切换到项目目录,具体命令,如下所示:
$ pwd
$ ll
$ cd git-rainbow/
$ ll
$ cd mtxcrm/
$ ls -la
之前我们了解过如何生成一个git仓库,使用命令git init,创建完毕后,它会在当前路径下生成.git文件夹(或者叫目录),这个里面就装了git最核心的信息,我们一起来探秘.git中都有哪些内容。
先通过以下命令进入到.git目录。
01 Git目录下文件清单
然后看看我的.git目录下都有哪些文件?
通过以下命令获取:
cd .gitdist
02 HEAD
以上这么多文件,哪些是我们经常使用的呢?
HEAD就是我们经常要使用的文件,这个文件中存放的是什么内容呢?
cd .gitdist
这个文本文件中指出,这是一个引用,通过什么看出来的?通过ref:看出来的。
一说到引用肯定是有指向的,这个引用具体指向哪里呢?refs/heads/temp。
之前为了演示git log创建了temp分支。
git branch -av
*号标记,表示我们当前所在的工作分支。
HEAD文件中存的这个引用,说明我当前本地的git仓库中,正在工作的分支是temp。
那么,此时我们做切换分支操作,HEAD文件中的内容会变吗?
我们执行切换分支命令,如下所示:
git checkout master
执行切换master分支命令,提示我们,这个操作必须运行在工作路径下。
因此,我们来查看下我们当前的目录是不是工作目录。
pwd
通过以下截图可见,我们在.git目录下,确实没有在工作目录下。
然后我们执行如下命令切换到工作目录下:
cd..
然后再次执行刚刚的切换master分支命令。
cat .git/HEAD
然后我们再来查看.git下的HEAD文件中的内容。
cat .git/HEAD
从以下接口可见,HEAD文件中的内容发生了变化,
之前HEAD文件中的指向是temp,现在变成了master。
也就是说,当我们切换分支的时候,HEAD文件中的内容跟着替换为当前分支名称。
告诉我们,我们当前的工作分支是哪个分支。
以上就是.git目录下HEAD文件存放内容的说明。
03 config
除此之外,我们还可能会经常接触config这个文件。
我们先来看看config文件中有什么信息?
cat .git/config
这里面我们比较熟悉的是,如下截图所示,[user]块中的内容,之前我们介绍config的时候,
如果在当前仓库下面用local的方式,给用户的name以及email,同global不同的情况下,
执行git config local操作,就会将相应的信息记录在config文件中,我们可以验证下。
将name值改成rainbow,然后保存退出。
vi .git/config
这个config修改后,是不是直接影响到local配置呢?我们执行命令试试。
git config --local --list
如下截图所示,返回的信息太多,我们仅仅想知道username信息
这个时候可以用另外一个命令查看,git命令后面直接跟你关注的东西
git config --local user.name
从如下命令返回结果信息,可见我的账号确实更改了。
验证完毕,我们需要将自己的账号信息改回去,用什么命令?使用如下命令进行重新指定
git config --local user.name 'helen'
注意:user.name后面是空格,而不是等号。
然后我们再查看config文件是否账号变更回helen。
先通过命令查看账号是否变更为原来的helen。
git config --local user.name
通过如下截图可见,账号变更为原来的helen。
然后我们再来查看config文件下的账号是否也变更为原来的helen。
cat .git/config
从如下截图可见,配置文件config中name值也变更回原来的helen。
总结,.git目录下的config文件中,存放的是git的配置信息,更确切的说,是跟本地仓库相关的配置信息都保存在config这个文件中,
在这里还是要推荐下我自己建的软件测试学习Q群: 746506216,群里都是学测试的,如果你想学或者正在学习测试,欢迎你加入,大家都是测试党,不定期分享干货(只有软件测试相关的),包括我自己整理的一份2022最新的Python自动化测试进阶资料和零基础教学,欢迎进阶中和对测试感兴趣的小伙伴加入!