Git submodule引入的诡异问题

问题说明,一般情况下,没有文件的空目录git是忽略掉的,可以今天遇到一个奇怪的问题,目录:

   ./source/ekernel/subsys/net/rt-thread/apps/nopoll

 下没有任何文件,如下图所示

按照道理,这样的目录是不会被git 管理起来的,但如果把目录删掉

git缺提示错误,看来这个目录是被git感知的,但一定有别于其它目录。

更奇怪的还在后面,既然nopoll目录有被管理,那好吧,我在目录下创建几个文件,按照道理应该可以被管理吧,毕竟父目录是能够被版本管理到的,可是事实却不是如此:

新创建的两个文件a.c, b.c竟然没有被管理到!!!

太奇怪了!

使用check-ignore检查一下,发现nopoll目录是被当成submodule了

谷歌到的答案

按照上图说明,在仓库根目录下执行

之后在git status

即可看到,目录正常了。


结束!

### Git Submodule 的使用教程 #### 初始化和更新子模块 当首次克隆一个包含子模块的仓库时,需要执行初始化操作来获取子模块的内容。这可以通过以下命令完成: ```bash git submodule init git submodule update ``` 上述命令会下载并检出所有子模块中的代码[^1]。 #### 添加新的子模块 如果希望向当前项目中添加一个新的子模块,可以使用 `add` 命令。例如,假设要将远程仓库 `git@github.com:AhuntSun/git_child.git` 作为名为 `mymodule` 的子模块加入,则运行如下命令: ```bash git submodule add git@github.com:AhuntSun/git_child.git mymodule ``` 此命令会在 `.gitmodules` 文件中记录该子模块的信息,并将其路径设置为 `mymodule`[^2]。 #### 提交子模块内的更改 在开发过程中,可能会对某个子模块进行修改。为了使这些改动生效于父项目中,需先切换至对应的子模块目录下提交本地变动后再返回主项目的根目录推送整体状态变化给远端服务器。 具体流程如下所示: 进入子模块文件夹位置; ```bash cd submodule_directory ``` 把所有的新创建或者被编辑过的文档标记出来准备上传它们到版本控制系统里去; ```bash git add . ``` 制作一条描述性的日志消息用于此次提交动作; ```bash git commit -m "Commit message" ``` 最后一步就是推送到原生存储库上去了(这里假定默认分支叫main); ```bash git push origin main # 或者其他实际使用的分支名称 ``` 接着回到顶层工程结构处再次确认刚才所做的那些调整已被正确反映到了整个体系当中来了没遗漏什么重要的东西才行哦!记得做最终的一次全局范围内的保存哈~😊 ```bash cd .. git add . git commit -m "Updated the sub-module reference." git push origin main ``` 以上步骤确保了即使是在嵌套型管理方式下的各个组成部分之间也能保持同步一致的状态良好运转下去呢😄[^3]. #### 替代方案对比分析 对于不同的需求场景而言, 可能存在多种实现手段可供选择: - **NPM Package**: 更适用于公开可用资源类型的依赖关系处理. - **Git Subtree**: 当前策略倾向于保留完整的合并历史记录场合适用. - **Submodule**: 主要是针对那些需要单独长期维护且可能涉及敏感数据保护机制方面的私密性质组件来说更为合适的选择. 因此,在决定采用何种技术之前,请务必充分考虑团队协作模式以及未来扩展可能性等因素的影响效果如何最佳匹配自身业务特点才是王道呀??[^4]. --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

papaofdoudou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值