git 为何不能添加空文件夹?

2015-01-19 22:59:42 +08:00
 esyed

mkdir aa
git status
发现git根本没发现新建了一个空文件夹:(
为何git要忽略空文件夹呢?

23945 次点击
所在节点    程序员
20 条回复
lujiajing1126
2015-01-19 23:03:24 +08:00
可以呀~
你在空文件夹下面创建一个.keep文件就好了
esyed
2015-01-19 23:04:02 +08:00
@lujiajing1126 那不是多了一个文件么:(
你目录下很多.keep空文件?
nicai000
2015-01-19 23:07:24 +08:00
空文件夹没有意义啊, git repo里是放源码的
lujiajing1126
2015-01-19 23:09:58 +08:00
@esyed 你试试就知道了哦
touch aa/.keep
git status
hackwjfz
2015-01-20 02:19:17 +08:00
随便放个文件就好。

.gitignore
datou552211
2015-01-20 07:57:11 +08:00
@lujiajing1126 空文件还是有意义的,比如upload文件夹,要让你指导你的目录结构
GTim
2015-01-20 08:11:16 +08:00
clino
2015-01-20 08:23:31 +08:00
@datou552211 我猜是因为git的内部实现,即只对文件做快照决定的吧,另一方面空文件夹确实对源代码是无用的,如果是部署的时候需要可以用部署相关脚本做到,但其实部署的时候最好不要把这些上载目录和源代码放在一起
rangercyh
2015-01-20 08:59:19 +08:00
@datou552211 类似upload这种目录结构的事情,你应该是写一个脚本,让用户运行一下就全出来,而不是你事先放好,使用方法写在说明里就行
chai2010
2015-01-20 09:04:15 +08:00
楼上的说那么多就是忽略git不支持空文件夹的事实.
但是有时候空文件夹是有意义的, 不然也不会出现那么多蛋疼的技巧.

我只能猜测是git开发者不喜欢空文件夹而拒绝支持这个特性.
datou552211
2015-01-20 09:07:00 +08:00
@rangercyh 写脚本当然可以,但是可能我只需要一个空目录来放自己的文件,而该文件又不适合用代码生成或搬运,比如私人证书,协议等
@GTim install和文件目录不冲突两者皆需
besto
2015-01-20 09:33:05 +08:00
@chai2010 git 确实不支持空文件夹,但是也不需要写脚本,可以使用git的hooks。
sparkle
2015-01-20 10:31:06 +08:00
因为git的内部索引是按照文件来做的
endrollex
2015-01-20 10:57:43 +08:00
放个dummy,空文件夹会出问题,有的FTP传送不了空文件夹
Cu635
2015-01-20 11:02:55 +08:00
@chai2010 git开发者……Linus么……
PrideChung
2015-01-20 13:06:44 +08:00
跟git的实现有关,一般约定俗成的替代方法是在文件夹里面放一个名为.gitkeep的空白文件
hyzjshwo
2015-01-20 13:09:01 +08:00
.gitkeep 就用来做这事的
bombless
2015-01-20 13:23:39 +08:00
git 本来就是蠢蛋的意思……
你可以骂它,然后它回答说,是啊,我就是这么蠢
lujiajing1126
2015-01-20 15:07:01 +08:00
@datou552211 你at错人了吧~应该是我楼上
esyed
2015-01-20 22:03:48 +08:00
@besto 写什么hook呢?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/163650

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX