git获取到本地文件夹_git – 存储本地分支的文件在哪里

在项目根目录中有一个隐藏的文件夹.git(当你运行git init或者初始化一个存储库时它会被创建),其中git存储了所有的“魔法位”.它并不是非常神奇 – 有一个HEAD文本文件,说明“head”所在的位置(例如当前检出分支或提交),refs目录中包含更多目录,这些目录包含与本地和远程分支名称相对应的文件 – 每个目录都是文件只是一个带有提交SHA的文本文件(就像一个字典,当你说“检出主分支!”时,git会去查找相应的文件,读取提交的内容 – 并查看提交).

提交在对象/目录中方便地引用“对象”.那个dir实际上包含了更多带有双字母名称的目录 – 前两个字母是SHA哈希 – 它与目录中的文件名一起构成了完整的哈希(提交,树或blob).在那个两个字母的目录里面,有实际的“物体”(git magic!).对象可以是“blob”或“tree”类型,前者对应于文件,后者(松散地)对应于目录.阅读docs中的git对象 – 这是一个简单的阅读,它还为您提供了一些查看单个对象的工具.

因此,如果在.git / refs / heads / master中是一个内容为a2789da8f918ef26c90e51d05de5723e5ad543a4的文本文件 – 这意味着master在该提交中.您的项目的“状态”存储在.git / objects / a2 / 789da8f918ef26c90e51d05de5723e5ad543a4中 – 这是项目目录的树对象,列出了所有文件的SHA和&那个时候项目目录中的目录.

所以,你无法真正浏览并找到来自不同分支的实际文件 – git不会以这种方式思考事物,它会将事物视为文件列表和放大器.迪尔斯.当您更改文件并提交它时,它会为该文件的内容创建一个新的“对象”,为父目录创建一个新的树对象(更新的文件更新为SHA)并写入一个提交对象(列出所有文件的树对象)项目目录中的&文件夹).或者至少这是我的理解,或多或少.

希望有助于揭开它的神秘面纱!

2017-12-21编辑:根据@Herman的评论更新了我的旧答案.对于它的价值,这里的答案可能有点“没有足够的背景信息太多”.

较短的答案 – git将所有数据存储在项目根目录的.git目录中,它存储对项目文件夹状态的引用,而不是单独的文件副本.

为了后人,如果有人在将来偶然发现这个答案 – 我强烈推荐这个课程:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值