Git初始提交代码推送失败:C#多项目提交Bitbucket遇仓库嵌套警告
解决Git提交嵌套仓库问题,统一提交所有C#项目
我来帮你搞定这个问题!你遇到的情况是因为子项目文件夹里单独初始化了Git仓库(也就是存在隐藏的.git目录),Git不允许仓库嵌套,所以才会抛出“一个目录下存在两个仓库”的警告,最终只处理了其中一个仓库,导致另一个子项目没被提交到Bitbucket。
下面是一步步的解决步骤,帮你把所有代码统一提交到同一个远程仓库:
第一步:确认问题根源
先打开命令行,进入你的主项目文件夹,执行下面的命令,找出所有隐藏的.git目录:
# macOS/Linux find . -name ".git" # Windows(PowerShell) Get-ChildItem -Recurse -Name ".git"
执行后你应该会看到主目录下有一个.git,同时其中一个或两个子项目文件夹里也有.git——这就是问题的核心。
第二步:备份子项目的Git历史(可选但推荐)
如果你的子项目之前有自己的提交记录,不想丢失的话,可以先备份这些历史:
- 进入子项目文件夹,比如
cd SubProject1 - 执行命令生成备份文件:
git bundle create sub1-history.bundle --all
重复上面两步处理另一个子项目,备份好的.bundle文件可以保留,之后如果需要把历史合并到主仓库,可以用git pull sub1-history.bundle导入。
第三步:删除子项目里的嵌套仓库
回到主项目文件夹,删除子项目里的.git目录(这会清除子项目本地的Git记录,所以一定要确认已经备份或者不需要这些历史了):
# macOS/Linux rm -rf ./SubProject1/.git ./SubProject2/.git # Windows(命令提示符) rd /s /q .\SubProject1\.git .\SubProject2\.git
第四步:重新提交所有代码到主仓库
- 如果你的主文件夹还没初始化Git仓库,先执行:
git init
(如果已经初始化过,直接跳过这一步)
- 添加所有文件到暂存区:
git add --all
这时候应该不会再出现嵌套仓库的警告了,所有子项目的文件都会被纳入主仓库。
- 提交到本地仓库:
git commit -m "Initial commit: Add all C# projects including SubProject1 and SubProject2"
第五步:关联并推送到Bitbucket远程仓库
- 如果还没关联Bitbucket仓库,执行下面的命令(替换成你自己的Bitbucket仓库URL):
# SSH方式(推荐) git remote add origin git@bitbucket.org:your-username/your-repo-name.git # 或者HTTPS方式 git remote add origin https://your-username@bitbucket.org/your-username/your-repo-name.git
- 推送到远程仓库:
# 如果主分支是main git push -u origin main # 如果主分支是master git push -u origin master
这样操作之后,你的所有C#代码(包括两个子项目)就会统一提交到Bitbucket的同一个仓库里,保持代码的整体性啦!
内容的提问来源于stack exchange,提问作者Andy5
相关产品推荐
相关产品推荐

