您的位置:首页 >Git怎么保留空文件夹_Git提交空目录的gitkeep方法【基础】
发布于2026-04-26 阅读(0)
扫一扫,手机访问

简单来说,Git本身并不跟踪空目录。所谓的“保留空文件夹”,其实是一种变通手段——而其中最可靠、也最通用的做法,就是在空目录里放一个名为 .gitkeep 的空文件。
这得从Git的设计逻辑说起。Git的核心是记录文件(blob)和目录结构(tree),但一个目录要想在版本历史中“存在”,它里面至少得有一个被跟踪的文件。空目录没有对应的文件对象,Git在扫描时就会直接忽略它。所以,这不是什么bug,而是Git的既定设计。
很多开发者第一次遇到时都会困惑:明明在本地建了个空目录,但git status毫无反应,git add mydir/也加不进去,最后git commit提交完,远程仓库里压根找不到这个目录的影子。
.gitkeep 是最稳妥的方案需要明确的是,.gitkeep并非Git的内置功能,而是社区长期实践后约定俗成的命名惯例。当然,文件名可以任意,但.gitkeep的识别度最高,工具链的兼容性也最好。
具体操作很简单:
touch mydir/.gitkeep.gitignore规则屏蔽(默认不会,但如果项目有忽略所有点号开头文件的规则,就需要检查一下)git add mydir/.gitkeep → git commit -m "add .gitkeep to keep mydir"完成之后,mydir/这个目录就会稳定地出现在工作区、暂存区和版本历史里了,并且除了.gitkeep之外,它依然保持“空”的状态。
有人可能会想:能不能用.gitignore文件来“反向操作”呢?答案是否定的。.gitignore只控制忽略逻辑,它本身并不能让Git去跟踪一个目录。试图在里面写!/mydir/或!mydir/**都是无效的,因为目录里根本没有可以被“取消忽略”的文件。
那用别的文件名行不行?比如.empty或者放个README.md?技术上当然可以,但存在一些潜在风险:
README.md这类有实际含义的文件,很容易被后续编辑或覆盖,从而破坏了“这只是个空目录占位符”的语义。.gitkeep是业界最广泛认可的占位符标识。.gitkeep文件进行默认隐藏或低优先级渲染,这样就不会干扰日常的开发视图。.gitkeep 不是魔法,它只是普通文件说到底,.gitkeep就是一个普通的空文件,它不需要特殊权限,也不影响Git的性能。但有一点必须牢记:它必须被git add过,并且确保没有被.gitignore拦截。
还有一个容易被忽略的后续操作:如果这个目录以后真的需要存放实际文件了,那么.gitkeep文件通常应该被手动删除。否则,它会显得多余,也背离了我们最初只是想保留一个空目录结构的本意。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9