Git分两次推送文件后GitHub显示空路径,克隆后文件正常的问题咨询
问题分析与解决思路
这种情况我之前也碰到过,大概率是这几个原因导致的:
1. 大小写敏感的路径冲突
如果你的本地系统是Windows或者默认大小写不敏感的macOS,而GitHub仓库是大小写敏感的,就容易出现这种问题:
- 第一次推送时,可能不小心用了不同大小写的路径(比如
assignment而非Assignment)提交了A/B/C,之后又改成正确的Assignment推送D/E - 本地系统会自动合并这两个路径,但GitHub会把它们当作两个独立的目录,其中旧的那个因为没有文件就显示为空路径
- 克隆到本地时,系统的大小写不敏感特性会把两个目录合并,所以你看到所有文件都在正确的
Assignment里
验证这个问题的话,你可以在本地用Git命令查看提交历史里的路径:
git log --oneline --name-only
看看有没有大小写不同的Assignment/assignment路径出现。
2. GitHub Web界面的缓存/显示bug
有时候GitHub的web界面会出现缓存延迟,显示的是旧的目录状态,但实际仓库的Git数据是正确的。这种情况一般刷新页面或者等一会儿就会自动消失。
3. 残留的空目录占位文件
如果之前你为了提交空目录,在某个路径下添加过.gitkeep之类的占位文件,之后删除了但没彻底清理提交记录,也可能导致GitHub显示空路径。不过这种情况克隆后本地不会有这个空目录,和你描述的情况不太吻合,但也可以排查下:
git log --all --full-history -- .gitkeep
看看有没有相关的提交记录。
解决方法
如果是大小写冲突的问题,你可以这样修复:
- 先把本地的
Assignment目录重命名为临时名称(比如Assignment_temp) - 提交这个改名操作:
git add . git commit -m "Fix case sensitivity for Assignment directory"
- 再把临时名称改回
Assignment,再次提交:
git mv Assignment_temp Assignment git add . git commit -m "Restore Assignment directory name"
- 推送到GitHub,之后空路径应该就会消失了
如果是缓存问题,直接刷新GitHub页面或者等几分钟再看就行。
内容的提问来源于stack exchange,提问作者PhoenixPan
相关产品推荐
相关产品推荐

