文章概述

上文中,我们聊了聊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结构。

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

gitk图形化工具

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

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

.git目录探秘

执行如下命令:

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存放标签信息。

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操作的一些勾子操作,后面会讲到。

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

  1. git查看分支记录_git原理

    标准用法请参考git-scm.本文记录笔者对git的一些理解,如有错误,欢迎指正. 引用内容已用markdown记号标出.版权所有,转载请注明出处. 文章完成中 这是引用内容 First Editio ...

  2. Git查看分支从哪个分支创建的

    使用命令 Git查看分支创建时间 git reflog show --date=iso <branch name> 如果是feature分支 git reflog show --date= ...

  3. git 查看分支创建时间

    git 查看分支创建时间 git reflog show --date=iso <branch name> 可以查看到指定分支的历次更改记录,最下面一条的时间即是分支创建时间.

  4. git merge 冲突_更新了!深入浅出图解Git,入门到精通(保姆级教程)第三篇

    原文链接:https://mp.weixin.qq.com/s/d7YwRi1mEkxUSUqxWD_B1Q 这一篇写完基本Git的操作就图解完了,如果想深入了解Git,这里可以推荐一些Git的硬核书 ...

  5. git 查看分支编码_12个常用的Git命令,赶紧记一波!

    今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然:并且梳理了日常最常用的 12 个命令,分为三大类分享给你. 本文的结构如下: 作者和开发原由 Git 的数据模型 常用命令 资源推荐 作者和 ...

  6. git 切换分支_简单git操作

    首先设置用户基本信息设置 设置用户名 git config - -global user.name 'Hazel6869' 设置用户名邮箱 git config - -global user.name ...

  7. git删除分支_程序员必须要掌握的 Git 使用技巧

    作者:你喜欢吃青椒么链接:juejin.im/post/5d157bf3f265da1bcc1954e6 前言 本文是参考廖雪峰老师的Git资料再加上我自己对Git的理解,记录我的Git学习历程,作下 ...

  8. git 删除分支_深入浅出图解Git,入门到精通(保姆级教程)

    原文链接:https://mp.weixin.qq.com/s/_G3l9urASsFjyrYAZBWhDg 分支管理 Git中比较最重要的一点就是分支的概念,有了分支就有了合并和衍合的操作,「合并」 ...

  9. git 删除分支_常用Git操作命令指南

    1.初始化git git init 2.下载git服务器上面的项目 git clone https://github.com/mrjade/reportng.git 3.配置git (1)查看git配 ...

最新文章

  1. 链表问题(6)-----排序
  2. Python学习心得第一周-03练习1
  3. 白话Elasticsearch18-深度探秘搜索技术之基于slop参数实现近似匹配以及原理剖析
  4. mysql query sql_sql:query 标签
  5. 【HDU - 6662】Acesrc and Travel(树形dp,博弈dp)
  6. php5.6 xdebug 配置,php5.5+apache2.4+mysql5.6+xdebug配置
  7. NTT通信公司在大阪开通运营容灾数据中心
  8. 众MVP对本书的赞誉
  9. STM32工作笔记0040---认识MOS管
  10. 九天学会Java,第三天,选择结构
  11. 信息系统项目管理师(高项)考试的论文怎么写,怎么背?经验分享
  12. 虚拟机ubuntu的联网方法(NET)
  13. android drawtext文字大小,Android 使用View绘制文字(DrawText)技术总结
  14. c语言输入一个数判断是否是同构数,c语言:编写函数判断x是否同构数
  15. 计算机远程控制阀门开启,阀门远程控制系统
  16. 豆豉烘干技巧有哪些,只用下列步骤烘干就行了
  17. 数据中台全景架构及模块解析!一文入门中台架构师!
  18. linux不出现图形界面的解决方法
  19. 433遥控器无线解码 1527中断方式解码 51单片机
  20. GTSAM中ISAM2和IncrementalFixedLagSmoother说明

热门文章

  1. Codeforces Round #198 (Div. 1) B,C 动态规划
  2. linux+分离线程+退出,Linux下线程终止操作.pdf
  3. text html mime img,使用Python的email.mime.multipart发送HTML邮件时命...
  4. hive hql文档_Hive存储过程HQL/SQL(一)–hplsql命令行
  5. MySQL DBA必备:MySQL 5.7升级8.0过程(全)
  6. 三问三答,解传统企业敏捷转型担忧
  7. AI语音入门:认识词错率WER与字错率CER
  8. 大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
  9. 光大银行刘淼:基于华为云GaussDB(DWS) 数据仓库创新实践
  10. 17张图带你解析红黑树的原理!保证你能看懂!