You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github提交时出现「尝试创建子目录位置存在同名文件」错误如何解决?

"Sorry, a file exists where you’re trying to create a subdirectory. Choose a new path and try again"

该报错是GitHub/Git提交场景下的高频问题,大量开发者都遇到过同类情况,常见于多人协作、跨操作系统开发、仓库历史迁移的场景。

错误产生原因
  • 路径类型冲突:你准备提交的子目录路径,和本地/远端仓库中已存在的普通文件 完全同名。比如你要创建src/tools/目录,但仓库中src路径下已经有一个名为tools的普通文件,Git无法在同一路径下同时兼容文件和目录两种类型,因此抛出错误。
  • 大小写识别冲突:Windows、macOS这类操作系统默认不区分文件名大小写,如果你新创建的目录和远端已有的文件仅大小写不同(比如新目录叫Utils,远端已有文件叫utils),Git识别到路径冲突也会触发该报错。
  • 索引缓存残留:你之前删除过对应路径的文件,但没有清理Git的本地索引缓存,缓存中仍然记录该路径为文件类型,和你现在要提交的目录类型冲突。
解决步骤
  1. 定位冲突根源:运行命令git ls-tree HEAD <报错的路径前缀>,比如报错指向src/utils就执行git ls-tree HEAD src/utils,如果返回结果中类型字段为blob,就说明该路径当前被Git识别为普通文件,确实存在类型冲突。
  2. 按场景处理冲突:
    • 同名文件无保留价值:直接删除本地的同名文件,再执行git rm <同名文件路径>,之后重新添加目录提交即可。
    • 仅为缓存残留冲突:执行git rm --cached <冲突路径>清理索引缓存,再重新添加目录提交即可。
    • 大小写命名冲突:先统一目录和已有文件的命名大小写规范,比如约定全小写命名,清理缓存后再提交。
  3. 拉取远端代码时触发的报错:先执行git stash暂存本地未提交的修改,拉取远端最新代码后再执行git stash pop恢复本地修改,手动处理路径冲突后重新提交即可。

内容的提问来源于stack exchange,提问作者Alen Abraham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 21:27:03