找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 30|回复: 5

px4源码中更换子模块仓库地址的正确方法。

[复制链接]

30

主题

26

回帖

4万

积分

管理员

积分
42068
发表于 2025-2-8 11:54:37 | 显示全部楼层 |阅读模式
[submodule "mavlink/include/mavlink/v2.0"]
        path = mavlink/include/mavlink/v2.0
        url = https://github.com/mavlink/c_library_v2.git
        branch = master



有时候, 新手会直接进入px4源码中的.gitmodules里面, 直接将子模块的远程库链接地址改掉, 但是当执行sudo git submodule init 和sudo git submodule update的时候,拉下来的子模块还是原来链接的内容。 直接改.gitmodules文件的方法是错误的。   
首先我们执行删除子模块的操作。


步骤是这样的,
第一步: 先删除原来的子模块。
1、 rm -rf 子模块目录, 删除子模块目录和源码
2、进入 .gitmodules文件,  删除项目目录下.gitmodules文件中子模块相关条目
3、进入.git/config文件, 删除配置项中子模块相关条目。
4、进入.git/module目录, 删除相应的子模块目录.
5、git rm --cached 子模块名称


第二步:用git submodule add 添加子模块,  
命令是git submodule add <url>  <path>  其中url是子模块的路径, path是该子模块要存储的目录路径。   

sudo git submodule add -b pod_control_branch  https://e.coding.net/g-zkva6329/px4_vtol/pinling_mavlink.git ./mavlink/include/mavlink/v2.0/
第三步:验证子模块是否更换成功
执行命令git status 我们会看到项目中修改了.gitmodules, 并且增加了一个新文件。   

执行git diff --cached, 我们可以看到增加了子模块, 并且新文件下是子模块的提交hash摘要


第四步:git commit提交完成子模块的添加。





我知道答案 回答被采纳将会获得 10 金钱 已有5人回答

30

主题

26

回帖

4万

积分

管理员

积分
42068
 楼主| 发表于 2025-2-8 12:05:11 | 显示全部楼层
第一步
1: cd  /home/cuigaosheng/linshi12/px4_vtol/mavlink/include/mavlink
sudo rm -rf v2.0

2、cd  /home/cuigaosheng/linshi12/px4_vtol
sudo vi .gitmodules

删除这个字段[
submodule "mavlink/include/mavlink/v2.0"]
        path = mavlink/include/mavlink/v2.0
        url = https://github.com/mavlink/c_library_v2.git
        branch = master
3:sudo vi .git/config文件, 删除mavlink相关条目, 不过在这个条目中, 我并没有看到mavlink相关东西。

删除后, 我们用git status 看看

cuigaosheng@cuigaosheng:~/linshi12/px4_vtol$ git status
位于分支 new_linshi
尚未暂存以备提交的变更:
  (使用 "git add/rm <文件>..." 更新要提交的内容)
  (使用 "git restore <文件>..." 丢弃工作区的改动)
        修改:     .gitmodules
        删除:     mavlink/include/mavlink/v2.0

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")



30

主题

26

回帖

4万

积分

管理员

积分
42068
 楼主| 发表于 2025-2-8 12:10:13 | 显示全部楼层

sudo git submodule add -b pod_control_branch  https://e.coding.net/g-zkva6329/px4_vtol/pinling_mavlink.git ./mavlink/include/mavlink/v2.0/

执行上面的命令,添加新的子模块链接,
然后回应。    'mavlink/include/mavlink/v2.0' 已经存在于索引中

但是当我, sudo vi .gitmodules后。 并没有看到我自己的子模块链接条目(pinling_mavlink)

不知是什么原因

30

主题

26

回帖

4万

积分

管理员

积分
42068
 楼主| 发表于 2025-2-8 12:18:34 | 显示全部楼层
是这样的, 执行完, git submodule add命令后, 我们还需要做下面的步骤。
你修改了子模块的链接和分支信息, 你修改的这些,需要被记录下来, 这样的话, 当别人克隆你的仓库时, 他们才能正确地检出子模块的特定分支。   

更新.gitmodules
git config -f .gitmodules submodule./mavlink/include/mavlink/v2.0.branch pod_control_branch
更新.git/config
git config -f .git/config submodule./mavlink/include/mavlink/v2.0.branch  pod_control_branch

30

主题

26

回帖

4万

积分

管理员

积分
42068
 楼主| 发表于 2025-2-8 12:25:45 | 显示全部楼层
我按照上楼说的方法更新.gitmodules和.git/config。  发现在.gitmodules文件中没有url地址。  这是为什么?
[submodule "/mavlink/include/mavlink/v2.0"]
        branch = pod_control_branch
~                                    

30

主题

26

回帖

4万

积分

管理员

积分
42068
 楼主| 发表于 2025-2-8 13:16:50 | 显示全部楼层
说是.gitmodules, 我们可以手动编辑它。   也就是说, .gitmodules文件是可以手动编辑的, 之所以, 你这边会出现问题, 是因为, 你没有考虑.git/config这些东西。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|flightreview|小黑屋|PX4-Autopilot|PX4论坛

GMT+8, 2025-3-12 19:21 , Processed in 0.064698 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表