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

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

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

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

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

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

近期热文推荐:

1.免费获取 IntelliJ IDEA 激活码的 6 种方式!

2.我用 Java 8 写了一段逻辑,同事直呼看不懂,你试试看。。

3.吊打 Tomcat ,Undertow 性能很炸!!

4.国人开源了一款超好用的 Redis 客户端,真香!!

5.《Java开发手册(嵩山版)》最新发布,速速下载!

觉得不错,别忘了随手点赞+转发哦!

Git 不能提交空目录?我也是醉了!的更多相关文章

  1. git 无法提交空目录

    git不能提交子文件夹?   空目录无法add,在最里面的目录下加上随便加上一个txt就可以了

  2. Git提交空目录

    1.git仅跟踪文件的变动,不跟踪目录.如果需要提交空目录,可以在里面添加 .gitignore 文件,方法如下: find . -type d -empty -exec touch {}/.giti ...

  3. git提交空目录的方法

    大家有时候希望从git仓库中拉取代码时目录就已经存在了,不需要再手动创建,但是git并不允许git提交空目录,应该怎么办呢?这篇文章通过可能遇到的两个情况来分别介绍如何解决,有需要的朋友们可以参考借鉴 ...

  4. 如何避免git每次提交都输入密码

    在ubuntu系统中,如何避免git每次提交都输入用户名和密码?操作步聚如下:1: cd 回车: 进入当前用户目录下:2: vim .git-credentials (如果没有安装vim 用其它编辑器 ...

  5. 如何利用git shell提交代码到github

    在很早之前我根据找到的一些资料以及自己的实践总结了一篇如何将VS2015上的代码上传到GitHub上,后来我发现有小伙伴私信我,说跟我上面写的不一样,但是那段时间也比较忙,当我发现有人私信的时候差不过 ...

  6. GIT入门笔记(20)- git 开发提交代码过程梳理

    git开发提交流程新项目开发,可以直接往master上提交老项目维护,可以在分支上修改提交,多次add和commit之后,也可以用pull合并主干和本地master,解决冲突后再push 1.检出代码 ...

  7. git 本地提交代码到 github 远程库,没有弹框 github login

     git 本地提交代码到 github 远程库,没有弹框 github login:  原因: win10 有个凭据管理器,给保存了历史登陆用户名密码,导致无法切换用户. 解决办法: 删除历史登陆用户 ...

  8. git 命令提交项目到github

    git 命令提交项目到github步骤如下: 1.使用git 命令客户端进入项目根路径,输入 git init  命令,创建github本地根目录 2.把文件加入到本地项目 git add .  ,如 ...

  9. Git push 提交代码到远程global user.name错误解决办法

    问题:安装了Git-1.9.4-preview和TortoiseGit等工具后,Git服务器开通了账号和密码并配置了邮箱.克隆了服务器代码到本地,按需求进行代码开发.提交本地代码到服务器时出现错误.具 ...

随机推荐

  1. C#LeetCode刷题之#622-设计循环队列​​​​​​​(Design Circular Queue)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4126 访问. 设计你的循环队列实现. 循环队列是一种线性数据结构 ...

  2. C语言编译过程以及Windows中的gcc编译程序(通过cmd、记事本)

    C语言的编译过程 1)预处理:宏定义展开.头文件展开.条件编译等,同时将代码中的注释删除,这里并不会检查语法 2)编译:检查语法,将预处理后的文件编译生成汇编文件 3)汇编:将汇编文件生成目标文件(二 ...

  3. 存储系列之 XFS文件系统简介

    引言:磁盘容量越来越大,文件系统管理的文件也是越来越大.越来越多,如何破解?唯有快!于是动态分配.B+树开始登上舞台.还记得当年MySQL的索引结构吗,好的作品所见略同. 一.XFS为什么替换Ext4 ...

  4. 存储系列之 共享文件:链接link

    一.link与unlink的定义 1.link link是Linux文件系统目录管理的一个系统调用,创建一个链接,该链接只是创建一个目录项,上文ext2的介绍中提到过目录项是<文件名,inode ...

  5. 洛谷P1149.火柴棒等式(暴力搜索)

    题目描述 给你n根火柴棍,你可以拼出多少个形如"A+B=C"的等式?等式中的A.B.C是用火柴棍拼出的整数(若该数非零,则最高位不能是0).用火柴棍拼数字0-9的拼法如图所示: 注 ...

  6. linux云服务器搭建 express后台 nginx转发

    购买云服务器 或者自己在本地搭建一个虚拟机 (我用的是腾讯云云服务器(CVM),或者可以购买阿里云 ecs服务器) 购买完成后 配置安全组 允许http https ftp 端口 一般运营商会提供说明 ...

  7. golang 开发 Struct 转换成 map 两种方式比较

    原文链接:https://www.jianshu.com/p/81c4304f6d1b 最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接 ...

  8. All in One 你想知道的 hacker 技术都在这里

    作者:HelloGitHub-小鱼干 hacker 这个词,大多数理解为黑客,而维基百科对其的定义为--黑客(Hacker)是指对设计.編程和计算机科学方面具高度理解的人,在本文中 hacker 主要 ...

  9. 牛客网PAT-练兵场-挖掘机技术哪家强

    题目地址:https://www.nowcoder.com/pat/6/problem/4058 题解:用数组下标当学校编号.输入一次数据的时候,直接在相应数组下标位置累加内容,同时更新最大的总分的学 ...

  10. 从开源协议到谷歌禁用华为、Docker实体清单事件

    ​平时我们在日常开发生活都在大量和开源软件打着交道,例如安卓.Linux.Github.Docker等,而其中开源协议比如MIT.Apache也是耳熟能详,但是真正对开源协议的了解相信对大部分人来说都 ...