Git怎么保留空文件夹_Git提交空目录的gitkeep方法【基础】
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/.gitkeep→git 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文件通常应该被手动删除。否则,它会显得多余,也背离了我们最初只是想保留一个空目录结构的本意。
相关攻略
VSCode终端默认是PowerShell而非Git Bash,因PowerShell是Windows官方现代shell,具备更好系统集成能力;Git Bash为第三方兼容层,需手动配置路径并设为默认终端。 为什么 VSCode 终端默认是 PowerShell 而不是 Git Bash 很多开发者
Git怎么查看文件在各版本间的变化_Git如何用diff对比两个commit的差异【命令】 git diff 怎么对比两个 commit 的差异 最直接的方法,就是使用 git diff 。这条命令会清晰地展示从 到 这个区间内,所有文件发生了哪些增删改。换句话说,你看到的就是 相对于 所做的全部改
Git不跟踪空目录,因其只记录含文件的目录结构;最可靠方案是在空目录中添加 gitkeep空文件并提交。 简单来说,Git本身并不跟踪空目录。所谓的“保留空文件夹”,其实是一种变通手段——而其中最可靠、也最通用的做法,就是在空目录里放一个名为 gitkeep 的空文件。 为什么 Git 不保存空文
Notepad++ 与 Git 集成:告别插件幻想,拥抱高效协同 开门见山地说,如果你正在为 Notepad++ 寻找一个可用的 Git 插件,恐怕要失望了。事实是,Notepad++ 本身并不支持 Git 插件——市面上既没有官方出品,也缺乏稳定的第三方集成。那些所谓的“Git 插件”传闻,通常指
Git怎么查看某行代码是谁写的_Git blame追溯代码作者教程【实战】 git blame 怎么看某行是谁写的 想快速定位某行代码的“最后经手人”?直接用 git blame 就对了。这个命令的设计初衷就是干这个的——它不负责展示完整的项目日志,也不翻陈年旧账,而是精准地将文件中的每一行,映射到
热门专题
热门推荐
荣耀Magic5录屏录音功能全解析:如何实现专业级音画同步 想在荣耀Magic5上录制带声音的屏幕内容?完全没问题。这款机型的录屏功能不仅支持录音,还给了你充分的选择权:可以只录系统内部播放的声音,比如游戏音效或视频原声;也可以只录制通过麦克风输入的人声解说;或者,两者混合录制,让讲解和演示声音同步
水空调如何更省电、更凉快?关键在于“精准控水、智能调风、协同环境”三位一体 想让水空调既省电又制冷强劲,秘诀不在于把水温调到最低,而在于一套“精准控水、智能调风、协同环境”的科学运行策略。简单来说,就是让水、风和环境三者打好配合。有实测数据表明,当循环水温稳定在7到12度这个“甜区”,配合高效的降温
卡萨帝洗衣机C9错误解析:排水异常背后的安全逻辑 当卡萨帝洗衣机的屏幕上跳出C9代码,很多用户的第一反应是“机器坏了”。其实不然,这恰恰是整机安全保护机制在起作用——它本质上是一个排水异常的硬件级提示。技术手册将其明确归类为“排水 进水时序异常”,意味着系统在脱水结束后,没能按预设剧本走完后续的进水
IH电饭煲煮的饭,真的更香吗? 答案是肯定的。无论是米饭的蓬松度、香气浓郁度、软硬均衡性,还是剩饭二次加热后的口感保持,IH电饭煲的表现通常都优于传统的底盘加热式电饭煲。这背后的核心,是一场从“局部加热”到“立体烹饪”的系统性技术升级。电磁感应技术让内胆自身均匀发热,结合精准的多段温度控制和部分机型
vivo S9恢复出厂设置失败,核心原因与标准处置流程 遇到vivo S9恢复出厂设置失败,先别急着下结论是手机坏了。这事儿,十有八九是操作链上的某个前置条件没达标——比如账户没退干净、电量告急,或者是系统缓存一时“卡了壳”。最稳妥的路径,依然是走系统设置菜单:依次点开【设置】→【系统管理】→【备份





