git 查看分支_系统掌握Git之—探索.git

321e6be39536b64dcdd4ede42a521cad.png

文章概述

上文中,我们聊了聊git的配置与一些基本概念,今天来看看.git文件夹里面有什么内容。通过阅读本文,你将获得下面的知识:

  • .git的内部信息。
  • git的分支操作。
  • 图形化git工具。

新建分支

我看可以通过git branch 查看分支情况。

* master

当前只有一个master分支,我们可以通过命令 git checkout -b 分支名称来创建一个新的分支。 我们创建一个名叫temp的分支git checkout -b temp,再次通过git branch查看分支情况。

master
*temp

我们对git.txt 随便做些修改,进行提交。

git add git.txt
git commit -m "第一次在分支上提交"
git log

我们再切换master分支,增加一次提交。

git checkout master
# 修改git.txt
git add git.txt
git commit -m "git in master"

我现在我们有两个分支了,我们可以通过上一节讲到的log命令看一下log结构。

79075061d2b33685c51f268f376ace54.png

下面我们用图形化工具更加具体的看一下当前我们仓库的提交情况。

gitk图形化工具

git默认是自带了图形化工具,在终端输入gitk。即刻打开图形化工具。

2ebea21e69f059cd83744ec3f86e84a1.png

通过设置:视图 -> 新视图 -> 勾选所有引用 就可以看到我上图的提交。
gitk长得比较丑陋,但是他有很多实用的工具,你自己可以探索一下。正式的项目中我比较推荐使用sourceTree这个工具进行代码管理。下面我们一起看看.git目录里的信息。

.git目录探秘

6de6746760f024522cfee1c366ce6c93.png

执行如下命令:

cd .git
cat HEAD
# ref: refs/heads/master 输出信息

HEAD里存放的是当前分支,如果我们将分支切到temp,HEAD里面的内容就变成了temp。

cd .
git checkout temp # 切换到分支 'temp'
cat .git/HEAD
# ref: refs/heads/temp

看完了HEAD的内容,我们看一下refs目录的结构,它下面有两个文件其中,heads存放分支信息,tags存放标签信息。

6a426d351dd1547ce4e3258207c789e3.png
cat master
# 9cb473a4ce3f4f9af213406c0177879155dced5c #这个就是master分支的最上面的一次提交id.
git cat-file -t 9cb473a4ce3f4f9af213406c0177879155dced5c # 查看类型
# commit
git cat-file -p 9cb473a4ce3f4f9af213406c0177879155dced5c # 查看内容
# tree c12315fe585a553da1fb7ee853bc84111eb8844d
# parent 6ec84005eb61d5ab8b4b768b8f876a23cc8fc2e1
# author zs_local <zs_local@163.com> 1585831559 +0800
# committer zs_local <zs_local@163.com> 1585831559 +0800
# git in master

我们接下来再看一下objects目录里面的内容。

cd objects # 进入到objects目录
ls # 查看objects目录下的内容
# 10 21 41 51 68 72 96 ae cf info
# 1b 31 4f 5e 6e 82 9c c1 d5 pack
cd 51 # 进入51目录
ls #查看该目录下的内容
# ee9c49370ad551e5fd3e8c98b8a89918369439
git cat-file -t 51ee9c49370ad551e5fd3e8c98b8a89918369439 # 查看类型,文件名是 目录名+目录内文件名
# tree
git cat-file -p 51ee9c49370ad551e5fd3e8c98b8a89918369439 # 查看文件内容 # blob
# 100644 blob 3155fb8c6c13dd5a42827e8e2fddb6eec1079385 git.txt
git cat-file -p 3155fb8c6c13dd5a42827e8e2fddb6eec1079385 #查看blob内容
# Hello git in temp branch%

根据上面的一顿操作,我们可以看出几个关键概念,commitidtreeblod 。 下面我们讲一下他们三个之间的关系:

  1. 1个commit对象里面会包含有 tree(相当于文件夹)、parent、author和committer;
  2. 一个tree里面会包含tree和blog(具体的内容);
  3. 一个blog指的就是具体的文件内容。在git中,blog与文件名无关,只与文件内容有关,即文件内容相同,在git中是同一个blog。

总结一下.git目录里面的内容:

  • HEAD 存放当前所在分支的头节点
  • config存放该仓库的一些配置信息,比如用户名,电子邮件,这点我们在第一节中讲过。
  • refs 下存放在heads和tags,分别存储着分支信息和标签信息。
  • objects目录存储放着所有的git变更历史对应的具体内容信息。
  • hooks中存放着对git操作的一些勾子操作,后面会讲到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值