做了一回标题党,事实上标题所说的这件事目前还无法做到,这也许算的上是 Git 的一个小缺陷吧,Linus 在写 Git 的时候可能默认就是把所有的文件夹默认为不是空的的。

今天新建了一个新的分支,就因为空的文件夹这个问题被坑了。因为我在 master 分支下有一些空文件夹存在,但是之前也并没有在意,然后我新建了一个分支,当我切换到新的分支的时候,发现在这个新的分支下居然有一些奇怪的文件夹,于是就顺手把它们都删了。后来当我切回到 master 分支的时候,毫无意外的发现少了一些文件夹 …

其实原理很简单,就是前面的 master 分之下,当使用 git add . 时,空文件夹并没有被加入到暂存区里面,这些文件夹还是被当作成普通的文件夹的。当我切换到另一个分支时,这些文件夹还是被当作成普通的文件夹放在了那里,所以我相当于把普通的文件夹给删除了,而且因为这些文件夹并没有被添加到 Git 中,所以也没有办法恢复,我最后还是手动又把这些文件夹创建了出来 …

解决这个问题其实也比较简单,就是在所有的空文件夹中添加一个文件(比如 .gitkeep),这样在使用 git add . 的时候,就能够成功的把所有的文件都保存到 Git 中了。