向含子文件夹的现有Git仓库推送Project4后文件夹为空问题求助
解决Git提交后空文件夹不被同步的问题
我之前也遇到过一模一样的问题——Git本身不会追踪空文件夹,这就是为什么你执行完git pull、git add .、commit和push后,project4文件夹是空的。因为空文件夹对Git来说没有需要追踪的内容,自然不会被纳入版本控制。
下面给你两个可行的解决方案:
方法1:给空文件夹加个占位文件
这是社区最常用的办法,在project4里创建一个名为.gitkeep的文件(这个名字是约定俗成的,Git会忽略它的实际内容,但会因为这个文件的存在而保留整个文件夹结构)。
执行这些命令就行:
# 进入project4文件夹 cd project4 # 创建.gitkeep文件(Windows系统请用 type nul > .gitkeep) touch .gitkeep # 回到仓库根目录 cd .. # 重新添加、提交并推送 git add . git commit -m "Add project4 folder with .gitkeep placeholder" git push
这样操作后,远程仓库里的project4就会正常显示,并且包含这个占位文件,不会再是空的了。
方法2:检查拉取的分支是否正确
如果你的git pull是想从远程拉取project4的内容,但拉完后文件夹是空的,那可能是你拉取的分支不对,或者远程分支里的project4本身就是空的。可以按以下步骤排查:
- 用
git branch -a查看所有本地和远程分支,确认你要拉取的分支存在 - 切换到目标分支:
git checkout <你的目标分支> - 重新从远程拉取该分支的内容:
git pull origin <你的目标分支>
额外提醒
Git的核心是追踪文件内容,不是文件夹结构。只有当文件夹里有文件时,Git才会在版本库中创建对应的文件夹。空文件夹对Git来说没有意义,所以不会被自动追踪。.gitkeep只是一个临时的 workaround,用来让Git识别并保留空文件夹的结构。
内容的提问来源于stack exchange,提问作者Amine Sehaba




