如何使用Git跟踪子文件夹?复制其他仓库内容仅显示HEAD文件怎么办
问题原因
复制Repo1内容到Repo2时,Repo1根目录下的.git隐藏文件夹也被同步复制,Git会自动将包含独立.git目录的文件夹识别为子模块,仅记录对应子模块的HEAD提交编号,不会跟踪内部的目录和文件。
快速修复步骤(适用于当前已完成复制、提交的场景)
- 进入Repo2本地根目录,先删除所有从Repo1复制过来的文件夹内的
.git隐藏目录。mac/Linux系统可直接执行以下命令,该命令会自动跳过Repo2本身的.git目录,避免误删自身版本记录:find . -name ".git" -type d | grep -v "^./.git" | xargs rm -rf
Windows系统可手动开启资源管理器的「显示隐藏文件」选项,逐个删除对应目录下的.git文件夹即可。 - 重新执行暂存操作:
git add . - 提交改动:
git commit -m "迁入Repo1完整目录结构" - 推送到远程仓库:
git push origin master
标准迁入操作(后续同场景可直接使用)
- 分别克隆Repo1和Repo2到本地两个独立目录
- 进入Repo1本地目录,删除根目录下的
.git文件夹,清除Repo1本身的版本记录 - 将Repo1下所有文件、文件夹完整复制到Repo2的目标路径下
- 依次执行
git add .、git commit、git push操作即可,完整目录结构会被Git正常跟踪
注意:操作前可先执行
git status查看待暂存的文件列表,确认所有目标文件都被Git识别,同时检查Repo2的.gitignore规则,避免需要迁入的文件被过滤。
内容的提问来源于stack exchange,提问作者X T
相关产品推荐
相关产品推荐

