git将克隆的目录作为普通文件夹上传
想将这两个文件夹作为普通文件夹上传,而不是子模块。这是因为 Git 检测到这些文件夹内有 `.git` 目录,自动将其识别为子模块。
解决方案
方法1:删除内部的 .git 文件夹(推荐)
# 进入项目根目录,删除子模块的 .git 文件夹
rm -rf credit_risk_v0/.git
rm -rf credit_risk_v20250910/.git# 从 Git 索引中移除子模块
git rm --cached credit_risk_v0
git rm --cached credit_risk_v20250910# 重新添加为普通文件夹
git add credit_risk_v0
git add credit_risk_v20250910# 提交更改
git commit -m "Convert submodules to regular folders"# 推送到远程
git push
方法2:如果已经推送了子模块,需要强制更新
# 删除子模块相关文件
rm -rf credit_risk_v0/.git
rm -rf credit_risk_v20250910/.git# 移除 Git 缓存
git rm --cached credit_risk_v0
git rm --cached credit_risk_v20250910# 删除 Git 模块配置
rm -rf .git/modules/credit_risk_v0
rm -rf .git/modules/credit_risk_v20250910# 删除 .gitmodules 文件(如果存在)
rm -f .gitmodules# 重新添加文件夹
git add credit_risk_v0
git add credit_risk_v20250910# 提交并强制推送(如果需要覆盖远程)
git commit -m "Convert to regular folders"
git push --force
方法3:重新克隆并手动复制(如果上述方法有问题)
# 备份您修改的文件
cp -r credit_risk_v0 credit_risk_v0_backup
cp -r credit_risk_v20250910 credit_risk_v20250910_backup# 删除原来的子模块
git rm --cached credit_risk_v0
git rm --cached credit_risk_v20250910
rm -rf credit_risk_v0
rm -rf credit_risk_v20250910# 从备份复制回来(此时没有 .git 文件夹)
cp -r credit_risk_v0_backup credit_risk_v0
cp -r credit_risk_v20250910_backup credit_risk_v20250910# 添加为普通文件夹
git add credit_risk_v0
git add credit_risk_v20250910# 提交更改
git commit -m "Add credit_risk folders as regular directories"
git push
验证步骤
完成后检查:
# 检查是否还有子模块
git submodule status# 检查文件夹状态
ls -la credit_risk_v0/ | grep git # 应该看不到 .git
ls -la credit_risk_v20250910/ | grep git # 应该看不到 .git
预防措施
未来从其他仓库克隆时,使用 --depth 1 避免克隆完整历史,或者手动删除 .git 文件夹:
# 方法1:浅克隆
git clone --depth 1 <url> folder_name# 方法2:克隆后删除 .git
git clone <url> temp_folder
cp -r temp_folder/* your_target_folder/
rm -rf temp_folder
rm -rf your_target_folder/.git
推荐使用方法1,这是最直接有效的解决方案。
