.git初探

2021-02-17  本文已影响0人  小木盒子

一、初识 .git

cd .git

- COMMIT_EDITMSG
- FETCH_HEAD
- HEAD:当前工作分支
- ORIG_HEAD
- config:当前仓库的配置信息
- index
- logs
- objects: 文件
- packed-refs
- refs:本地/远程分支和tag信息

cd objects

drwxr-xr-x  11 heqin  staff  352 Mar  6 11:08 fb
drwxr-xr-x  17 heqin  staff  544 Mar  6 10:06 fc
drwxr-xr-x  10 heqin  staff  320 Feb 28 12:02 fd
drwxr-xr-x  15 heqin  staff  480 Mar  1 11:52 fe
drwxr-xr-x  19 heqin  staff  608 Mar  6 10:39 ff
drwxr-xr-x   2 heqin  staff   64 Feb 13 16:11 info
drwxr-xr-x  20 heqin  staff  640 Mar  5 09:31 pack :将松散的hash文件夹打包

cd fb

-r--r--r--  1 heqin  staff    48 Feb 15 10:52 00b237e2d3c368fd26fc9143ea7a0d06f144b4
-r--r--r--  1 heqin  staff   172 Mar  1 10:47 11e701e15678ac0fbf8de6788449cdb058c7bb
-r--r--r--  1 heqin  staff   252 Feb 13 17:51 17b2f75d2bd410cdc7ba0462ca067b82049b62
-r--r--r--  1 heqin  staff    48 Feb 28 13:12 4ed5900c4a761c66b0767b017aa0b56a0a0e57
-r--r--r--  1 heqin  staff   549 Mar  6 11:08 a5cf698c19f92e1144ad553e4c552eb0ab8ccd
-r--r--r--  1 heqin  staff    49 Mar  1 11:52 c21fdc38321d4ff364d4f771597db5b41804ed

fb和00b237e2d3c368fd26fc9143ea7a0d06f144b4组成一个完整的hash值

查看hash值的类型:
git cat-file -t fb00b237e2d3c368fd26fc9143ea7a0d06f144b4

tree

查看hash值的内容
git cat-file -p fb00b237e2d3c368fd26fc9143ea7a0d06f144b4

040000 tree 18652d5639dfa9808b26502dd62e4ad5879493ea    devops

继续看18652d5的内容
git cat-file -p 18652d5

100644 blob f234a617597873c3ae13df54c7c99bd41e2ad65d    ApplicationLoader.java
040000 tree 3223d5dce1ef8ff9c51ff0dbb4113cb3abe33cf2    adapter
040000 tree 64cbc72a931adde60f4d5d9f2479e9b10e41c293    application
040000 tree f110b06cf298d8b129a27ac0c75b379c167787c3    domain
040000 tree f21a7376bc59fe42e80fcb6455dc54136b0d88e8    infrastructure

git cat-file -p f234a617

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
public class ApplicationLoader {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(ApplicationLoader.class);
        application.setAdditionalProfiles(MdpContextUtils.getHostEnvStr());
        application.run(args);
    }
}

从此处可以见blob已是文本类型,内容即是git的存储的内容

此处已涉及到2种对象类型

二、commit、tree、blob之间的关系

对象关系图

commit下包含tree对象和上一个提交commit(parent),tree下包含本次commit所有视图文件,如果视图中包含文件夹依然是个tree对象,如果是文件则是blob对象,blob对象的内容即使文件内容

三、常用命令

  1. 删除分支:git branch -D xxx
  2. 修改最新commit的message信息:git commit --amend
上一篇 下一篇

猜你喜欢

热点阅读