路径.git下的文件

用了这么久的git, 可以毫不谦虚地说对git是一无所知. 每天用来用去的就是commit, add, merge 等几个有限的命令, 这不符合我这刨根问底的性格啊. 不行, 得研究研究, 从哪里下手呢? 别的咱先不说, 所有 git 项目都有这么一个文件夹.git, 不如就从它入手 ? 那咱就看看这个文件夹下都有些什么妖魔鬼怪.

先来想一想, .git文件夹下保存了git仓库的所有信息, 那么就包括:

  • 提交历史
  • 暂存内容
  • 当前分支
  • 远程分支路径
  • 等等

好, 来看一看都有些什么:

image-20210522220738773

内容都在这了, 好, 那就对这些文件依次看一下吧.

先来说一下我目前对这个测试项目的操作.

; 创建文件提交
touch readme.md
git add readme.md
git commit -m 'add readme'
; 修改文件提交
echo test > readme.md
git add readme.md
git commit -m 'change readme'
; 创建分支
git checkout -b master_test

仅做了两次提交操作, 这是为了保持.git文件夹最初的状态, 好方便查看.

COMMIT_EDITMSG

此文件保存了最后一次commit的信息. 没搞懂存这玩意有啥用, 我直接 git log看不就行了么.

image-20210522223207116

HEAD

保存当前使用的分支.

image-20210522223417114

另外, 直接修改这个文件, 就可以达到git checkout命令的目的. (可以切换分支, 但是不能创建分支哦)

再另外, 从这个文件内容中, 可以推断出, refs文件夹是用来保存分支信息的, 不过这个先记到小本本上, 接着往后看.

config

不用说, 看名字也知道, 是用来保存配置信息的.

我们加一条本地配置信息看一下: git config --local user.name 'git_test'

如果不出所料, 远程地址也保存在这里, 加一下: git remote add origin http://test.com/aa/bb

image-20210523143935008

description

不多说了, 上图, 看文件描述是用来填写项目的描述信息的.

image-20210522224441090

hooks

存放项目的各个钩子函数, 就是在各种操作的前后添加自己的执行逻辑. 这个之前倒是一直没有用过. 文件夹下有样例文件, 直接将.sample后缀删除即可使用. (下面只列举了常用的几个, 并不是全部)

  • pre-commit: commit 之前触发. 可用来对代码进行检查

  • prepare-commit-msg: commit 之前, 添加 message 之后.

  • commit-msg: commit 时调用, 可修改 message, 也可以取消本次提交

  • post-commit: commit 之后调用

  • post-update: push之后触发

  • pre-receive: push 时, 实际推送之前调用

  • pre-push: push 之前触发

  • pre-merge-commit: merge之前触发

  • pre-rebase: rebase 之前触发

等等, 具体信息可到官网文档查看

可以看到, 此文件夹用来对工作流程进行自动化管理的.

index

用来保存本地暂存区中的内容. 二进制文件, 不可直接查看. 可通过命令: git ls-files --stage来查看当前暂存区内容.

info

路径下目前只有一个文件: exclude. 此文件用来在git中忽略某些文件. 与.gitignore不同的是, 此文件不会进行提交. 也就是用来忽略一些仅你本地使用的文件.

logs

用来记录所有的操作记录. 看一下我本地这几个文件的内容.

image-20210523141224344

HEAD文件记录的是所有的操作, 而对应refs文件夹下, 则记录的时候各个分支中的操作.

同时, 可以通过git reflog命令来进行查看, 当出现误操作的时候, 通过git reset --hard {id}来后悔.

objects

这个文件保存的就是所有 git 历史变动了, 具体文件的保存结构就留待日后研究. 这里先不深究.

可通过git gc来减少文件体积.

refs

保存本地的分支和标签. 文件内容也很简单, 就是一个 commit id.

另外, gc之后, 会多出来一个: .git/packed-refs文件. 此文件包含refs下的所有信息, 同时refs下的文件会被清空.

其他文件
FATCH_HEAD

用来保存远程分支信息

image-20210523145221640

ORIG_HEAD

在执行如merge, reset, rebase等操作时, 对 "HEAD"文件内容进行备份.

sourcetreeconfig

当使用sourcetree对项目进行管理时, 用来保存sourcetree中的配置信息.


.git文件夹下的内容过了一遍, 基本保存的位置都找到了, 剩下保存内容的二进制文件了还整不明白.

过下来之后, 倒也发现了一些能够帮到我的内容, 比如本地的 ignore, 之前的处理是在路径下添加.gitignore同时将.gitignore文件本身也忽略. 后面可以直接修改.git/info/exclude这个文件.

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
.gitconfig文件是一个用于配置Git文件。它可以用于设置Git命令的参数、别名、默认编辑器和其他个性化设置。该文件只适用于当前登录用户,位于用户的家目录下的.gitconfig文件(在Windows系统上,默认路径为C:\Users\Administrator\.gitconfig)。 Git会按照一定的顺序查找.gitconfig文件。首先,它会查找每个用户的~/.gitconfig文件(或者~/.config/git/config文件)。然后,你可以使用--global选项让Git读写该文件,以全局配置Git的设置。 在.gitconfig文件中,你可以配置不同的选项,例如设置用户名、邮箱、默认的编辑器、别名等。你还可以添加自己常用的配置和工具。比如,你提到了git brage命令,它可以显示按照上次提交日期排序的Git分支的彩色列表。这个命令可以被视为git branch的补充。 总之,.gitconfig文件是用于配置Git文件,可以用于设置Git命令的参数、别名、默认编辑器和其他个性化设置。它位于当前登录用户的家目录下,可以通过--global选项进行全局配置。你可以在其中添加自己常用的配置和工具。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Git config 配置](https://blog.csdn.net/u010274449/article/details/124179992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [gitconfig:我的.gitconfig](https://download.csdn.net/download/weixin_42131618/19063781)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值