.git文件夹详解

         在git 克隆代码之后,还不能直接使用git,而需要初始化git,它会自动创建git仓库需要的目录。这些文件存在于项目下的.git文件夹下。

         .git文件夹是git init后在当前目录生成的一个管理git仓库的文件夹,这里包含所有git操作所需要的东西,如下图:

               

hooks(钩):存放一些shell脚本

Infoexclude:存放仓库的一些信息

logs:保存所有更新的引用记录

HEAD

refsheadsremote


objects:存放所有的git对象

               

         例如:logs中  9e63549ae26ed3bff8b96adb6498520855d52d可以找到下图

               

               

refs

heads:保存当前最新的一次提交的哈希值

COMMIT_EDITMSG

最新提交的一次Commit Messagegit系统不会用到,给用户一个参考

description:仓库的描述信息,主要给gitweb等git托管系统使用

configgit仓库的配置文件

               

index:暂存区(stage),一个二进制文件

FETCH_HEAD: 是一个版本链接,指向着目前已经从远程仓库取下来的分支的末端版本

HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值(看上面logs的图)

ORIG_HEAD:HEAD指针的前一个状态

               

         在logs/HEAD中,最后一条提交记录,当前hash值

               

packed-refs:

               


         当更新一个引用时,git不会packed-refs,而是会在refs/heads下写入一个新文件。当查找一个引用时,git首先在refs目录下查找,如果未找到则到packed-refs文件中去查找。

看完文件夹目录,感觉git的理解是不是又深了一步

祝好运

### Git 子模块的概念 Git 子模块允许一个 Git 仓库作为另一个 Git 仓库的子目录存在,同时保持独立。这意味着可以在主项目中嵌入其他项目的依赖关系而不破坏其自身的结构[^1]。 ### 添加子模块 要在现有项目中添加一个新的子模块,可以使用 `git submodule add` 命令: ```bash git submodule add http://xxx:xx/XieXiaohan/test2b.git path/to/submodule ``` 这会克隆指定 URL 的仓库并将其放置在给定路径下。如果省略路径参数,则默认会在与远程仓库名称相同的文件夹内创建该子模块。 ### 初始化和更新子模块 当首次检出包含子模块的新存储库时,需要初始化这些子模块,并获取它们的数据: ```bash git submodule init # 初始化本地配置文件 git submodule update # 获取所有数据并在必要时检出适当提交 ``` 对于已经存在的工作树中的更改,可以通过运行上述命令来同步最新的改动。 ### 提交含有子模块变更的修改 一旦对某个子模块进行了任何改变——无论是版本升级还是降级——都需要回到父项目根目录执行如下操作以记录新的哈希值: ```bash cd .. git add path/to/submodule git commit -m 'Updated the submodule to a new version' ``` 这样做的目的是让父项目的快照能够反映当时所使用的特定状态下的子模块版本信息。 ### 删除子模块 要移除不再需要的子模块,首先要编辑 `.gitmodules` 文件删除对应的条目;其次,在`.git/config` 中也做相应调整;最后通过下面的方式清理残留的工作副本以及索引项: ```bash rm -rf .git/modules/path/to/submodule/ git rm path/to/submodule ``` 请注意,以上步骤不会影响原始外部资源的位置或内容。 ### 工作流程建议 为了更好地管理多个子模块,推荐定期检查是否有可用更新,并及时处理冲突情况。此外,还可以考虑设置钩子(hooks),以便自动化某些重复性的任务,比如自动拉取最新变化等。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值