Git仓库两个子文件夹仅一个更新,如何通过父目录同步两者?
解决方法
从你的git status输出里client (new commits)能看出来,client是一个独立的Git仓库,不是Parent仓库下的普通文件夹——Parent仓库只记录了这个子仓库的引用,并没有追踪里面的文件,所以GitHub上才会显示client为空。
如果你本来不想让client独立(只想把它当Parent仓库的子文件夹)
- 进入client目录,删除里面的
.git文件夹:- Linux/macOS:
rm -rf .git - Windows命令行:
rd /s /q .git
- Linux/macOS:
- 回到Parent目录,执行
git add client/,把client下所有文件加入仓库追踪 - 正常提交推送:
git commit -m "Add client files" && git push
之后Parent仓库就会正常追踪client里的所有文件,不用切换目录就能和server一起提交更新。
如果你确实需要client作为独立仓库(子模块)
这种情况适合client本身是单独项目,需要和Parent仓库关联的场景:
- 回到Parent目录,先初始化子模块(如果之前没正确设置):
git submodule add <你的client仓库远程地址> client - 拉取子模块的最新内容:
git submodule update --init --recursive - 提交子模块的引用到Parent仓库:
git add client git commit -m "Update client submodule reference" git push
之后在GitHub上,client文件夹会显示为可点击的链接,指向它的独立仓库,内容也会同步展示。
内容的提问来源于stack exchange,提问作者sbfergus
相关产品推荐
相关产品推荐

