Git实现仅向私有远程提交资产,适配多分支代码开源需求
解决方案
方法一:双分支+定向推送(适配已有双仓库场景)
- 以私有仓库的
main分支作为核心分支,正常提交游戏代码与assets文件夹,不对其做忽略处理。 - 创建并切换至公开分支:
git checkout -b public - 在
public分支中移除assets的跟踪记录并提交:git rm -r --cached assets echo "assets/" >> .gitignore git add .gitignore git commit -m "停止跟踪assets文件夹,适配公开分支" - 后续开发流程:在
main分支同步更新代码与资产,再将main分支的代码合并至public分支(合并时使用git merge main --no-ff,若出现冲突,优先保留public分支的.gitignore配置)。 - 定向推送至对应远程仓库:
# 推送私有内容到私有仓库 git push private-repo main # 推送公开内容到公开仓库 git push public-repo public:main - 分支切换说明:
main分支下assets正常可见并被跟踪;切换到public分支时,本地assets文件夹不会被删除,但Git会忽略它,不会提交到公开仓库。
方法二:Git子模块分离资产(权限隔离更清晰)
- 新建私有仓库专门存储游戏资产,将所有资产提交至该仓库。
- 在公开的游戏代码仓库中,添加私有资产仓库作为子模块:
git submodule add <私有资产仓库地址> assets - 提交子模块引用至公开仓库:
git add .gitmodules assets git commit -m "添加assets子模块引用" - 推送公开仓库至远程后,公开仓库仅包含子模块的引用信息,不会存储实际资产;其他用户克隆公开仓库时,默认不会拉取私有资产。
- 自身本地开发时,拉取代码后初始化并更新子模块:
git submodule init git submodule update - 后续更新:进入
assets子模块文件夹,直接提交修改到私有资产仓库;游戏代码的更新在主仓库操作,两者互不干扰。
内容的提问来源于stack exchange,提问作者student1234
相关产品推荐
相关产品推荐

