商城首页欢迎来到中国正版软件门户

您的位置:首页 >Git怎么保留空文件夹_Git提交空目录的gitkeep方法【基础】

Git怎么保留空文件夹_Git提交空目录的gitkeep方法【基础】

  发布于2026-04-26 阅读(0)

扫一扫,手机访问

Git不跟踪空目录,因其只记录含文件的目录结构;最可靠方案是在空目录中添加.gitkeep空文件并提交。

Git怎么保留空文件夹_Git提交空目录的gitkeep方法【基础】

简单来说,Git本身并不跟踪空目录。所谓的“保留空文件夹”,其实是一种变通手段——而其中最可靠、也最通用的做法,就是在空目录里放一个名为 .gitkeep 的空文件。

为什么 Git 不保存空文件夹?

这得从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/.gitkeepgit commit -m "add .gitkeep to keep mydir"

完成之后,mydir/这个目录就会稳定地出现在工作区、暂存区和版本历史里了,并且除了.gitkeep之外,它依然保持“空”的状态。

其他方法为什么不太推荐?

有人可能会想:能不能用.gitignore文件来“反向操作”呢?答案是否定的。.gitignore只控制忽略逻辑,它本身并不能让Git去跟踪一个目录。试图在里面写!/mydir/!mydir/**都是无效的,因为目录里根本没有可以被“取消忽略”的文件。

那用别的文件名行不行?比如.empty或者放个README.md?技术上当然可以,但存在一些潜在风险:

  • README.md这类有实际含义的文件,很容易被后续编辑或覆盖,从而破坏了“这只是个空目录占位符”的语义。
  • 一些CI/CD工具或自动化脚本可能会识别特定的文件名,而.gitkeep是业界最广泛认可的占位符标识。
  • 像VS Code这样的主流IDE,通常会对.gitkeep文件进行默认隐藏或低优先级渲染,这样就不会干扰日常的开发视图。

注意:.gitkeep 不是魔法,它只是普通文件

说到底,.gitkeep就是一个普通的空文件,它不需要特殊权限,也不影响Git的性能。但有一点必须牢记:它必须被git add过,并且确保没有被.gitignore拦截。

还有一个容易被忽略的后续操作:如果这个目录以后真的需要存放实际文件了,那么.gitkeep文件通常应该被手动删除。否则,它会显得多余,也背离了我们最初只是想保留一个空目录结构的本意。

本文转载于:https://www.php.cn/faq/2320919.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注