Git 不能提交空目录?我也是醉了!

简介: Java技术栈www.javastack.cn关注阅读更多优质文章Git 不能提交空目录?我也是醉了!

背景

最近在提交文件时,因为是空的 Maven 项目结构,发现 Git 空目录死活不能提交,还以为是我自己在 .gitignore 文件中忽略了,在网上查了下,原来还真有这回事。


如,用 git status 查看状态:


$ git status

On branch master

No commits yet

nothing to commit (create/copy files and use "git add" to track)

空目录无法被 git 感应。


解决方案

最主流的做法是,在空目录下创建 .gitkeep 或者 .keep 空文件,或者 .gitignore 文件,这只是一个约定俗成的空目录识别文件名,其实除了占位识别空目录,其他并没什么卵用。


我们再在空目录中创建一个空文件:


touch .gitkeep

然后再用 git status 查看状态:


$ git status

On branch master

No commits yet

Untracked files:

 (use "git add <file>..." to include in what will be committed)

src/

nothing added to commit but untracked files present (use "git add" to track)

现在可以感应到 src 目录了。


另外需要注意,在项目的 .gitignore 中不要忽略此文件。如果有需要,关注公众号Java技术栈可以获取一份推荐的 .gitignore 通用文件。


WHY

这种解决方案感觉有点扯淡,为什么提交不了空目录,一定要放个文件才行,放个不相干的文件感觉又有点扯淡。


于是抱着怀疑的态度再次查下资料,在下面这个链接我找到解释:


https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F

image.png

大概就是,Git 最初的设计是用来索引文件的,所以 Git 只关注文件,不关心文件,不关心目录。


这是不是 Git 的设计问题呢?


最后,你是否有遇到这种蛋疼的问题?你还有其他解决方案吗?欢迎留言分享~


后面我还会分享一些我平时用到的修改历史记录的实战干货,比如怎么修改历史提交信息、合并多次提交等,关注公众号Java技术栈第一时间推送。


老铁们,觉得有用,点个在看、转发支持下哦!


目录
相关文章
|
开发工具 git
vscode编辑器里怎么显示.git隐藏文件夹到目录里
vscode编辑器里怎么显示.git隐藏文件夹到目录里
261 0
|
持续交付 开发工具 git
如何保留原提交记录迁移Git项目,你还不知道吗?
如何保留原提交记录迁移Git项目,你还不知道吗?
如何保留原提交记录迁移Git项目,你还不知道吗?
|
存储 开发工具 git
.git 目录中有什么?
.git 目录中有什么?
59 2
|
存储 开发工具 git
git中怎样忽略.idea/文件和目录
git中怎样忽略.idea/文件和目录
192 0
|
开发工具 git
将本地目录推送到Git远程仓库
将本地目录推送到Git远程仓库
|
开发工具 git
git 排除已经提交的文件目录
如果你已经把一个文件夹提交到了 Git 仓库中,但是后来发现这个文件夹不应该被提交,可以按照以下步骤排除已提交的文件夹: 在文件夹的根目录下创建一个名为 .gitignore 的文件。 编辑 .gitignore 文件,添加需要排除的文件夹的名称,以及其他需要排除的文件或文件类型,每个名称占一行。 执行以下命令,将 .gitignore 文件提交到 Git 仓库中:
540 0
|
Shell 开发工具 git
Git基础使用-如何用Git把代码提交至仓库/新建仓库/同步代码/推送代码
Git基础使用-如何用Git把代码提交至仓库/新建仓库/同步代码/推送代码
606 0
|
Shell 开发工具 数据安全/隐私保护
Git提交之后自动打版本并钉钉通知
Git提交之后自动打版本并钉钉通知
459 0
Git提交之后自动打版本并钉钉通知
|
开发工具 git
phpstrom git 修改文件就提交方法
phpstrom git 修改文件就提交方法
96 0
phpstrom git 修改文件就提交方法
|
数据可视化 Java 数据库连接
忽略不想提交的文件- 每天三分钟玩转Git(10)大结局
忽略不想提交的文件- 每天三分钟玩转Git(10)大结局
忽略不想提交的文件- 每天三分钟玩转Git(10)大结局