问题描述
我的问题
我尝试了解 Git 子模块的工作原理。出于试用目的。 我测试了一个场景:
- 创建一个带有 plugin1 模块的项目容器 main
- push main 到远程
- 将 main 克隆到本地 team1 存储库
- 对 team1 和 plugin1 进行了更改
- 远程推送每个人
那么:
- 更新主要
- 从远程克隆team2
我得到了什么
team2 两个都换了,没问题。
main 没有变化
我在从 main 中获取时也收到一条错误消息,不明白它是什么
$ git fetch
remote: Enumerating objects: 5,done.
remote: Counting objects: 100% (5/5),done.
remote: Compressing objects: 100% (2/2),done.
remote: Total 3 (delta 0),reused 0 (delta 0),pack-reused 0
Unpacking objects: 100% (3/3),320 bytes | 21.00 KiB/s,done.
From ..\Remotes\main
e45fe74..c1a1094 master -> origin/master
Fetching submodule plugin1
fatal: git upload-pack: not our ref e43b6a164b70e69bf31456bf4faabbf7b3f12f26
fatal: remote error: upload-pack: not our ref e43b6a164b70e69bf31456bf4faabbf7b3f12f26
Errors during submodule fetch:
plugin1
我的问题
为什么main没有正确更新? 不确定这是一个子模块问题,我对 Git 比较陌生。
其他
这是我运行的批处理脚本:
mkdir demo
cd demo
@echo remotes
@echo --------------------------
mkdir remotes
cd remotes
@echo Initialize remotes
@echo --------------------------
mkdir main
cd main
git init --bare
cd ..
mkdir plugin1
cd plugin1
git init --bare
cd ../..
@echo Create submodule repository
@echo --------------------------
mkdir plugin1
cd plugin1
git init
echo foofoo > lib1.txt
git add lib1.txt
git commit -m "first commit plugin1"
git remote add origin1 ..\Remotes\plugin1
git push --set-upstream origin1 master
cd ..
@echo Create main repository
@echo --------------------------
mkdir main
cd main
git init
echo barbarbar > code.txt
git add code.txt
git commit -m "first commit main"
git submodule add ../plugin1 plugin1
git commit -m "Ajout du sous-module plugin1"
git remote add origin ..\Remotes\main
git push --set-upstream origin master
cd ..
@echo Team1 get project and modify it
@echo --------------------------
git clone --recursive remotes/main team1
cd team1
cd plugin1
git checkout master
@echo modify plugin1
echo "modify plugin1" > file1.txt
git add file1.txt
git commit -m "Commit test 1"
git push
cd ..
@echo modify main
echo "modif main 1" >> code.txt
git add *
git commit -m "2nd commit main"
git push
cd ..
@echo go back to main
@echo --------------------------
cd main
git submodule update --init --recursive
cd ..
@echo Team2 get new project
@echo --------------------------
git clone --recursive remotes/main team2
谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)