V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
esyed
V2EX  ›  程序员

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

  •  
  •   esyed · 2015-01-19 22:59:42 +08:00 · 23895 次点击
    这是一个创建于 3377 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    我只能猜测是git开发者不喜欢空文件夹而拒绝支持这个特性.
    datou552211
        11
    datou552211  
       2015-01-20 09:07:00 +08:00 via iPhone
    @rangercyh 写脚本当然可以,但是可能我只需要一个空目录来放自己的文件,而该文件又不适合用代码生成或搬运,比如私人证书,协议等
    @GTim install和文件目录不冲突两者皆需
    besto
        12
    besto  
       2015-01-20 09:33:05 +08:00
    @chai2010 git 确实不支持空文件夹,但是也不需要写脚本,可以使用git的hooks。
    sparkle
        13
    sparkle  
       2015-01-20 10:31:06 +08:00
    因为git的内部索引是按照文件来做的
    endrollex
        14
    endrollex  
       2015-01-20 10:57:43 +08:00
    放个dummy,空文件夹会出问题,有的FTP传送不了空文件夹
    Cu635
        15
    Cu635  
       2015-01-20 11:02:55 +08:00
    @chai2010 git开发者……Linus么……
    PrideChung
        16
    PrideChung  
       2015-01-20 13:06:44 +08:00
    跟git的实现有关,一般约定俗成的替代方法是在文件夹里面放一个名为.gitkeep的空白文件
    hyzjshwo
        17
    hyzjshwo  
       2015-01-20 13:09:01 +08:00
    .gitkeep 就用来做这事的
    bombless
        18
    bombless  
       2015-01-20 13:23:39 +08:00
    git 本来就是蠢蛋的意思……
    你可以骂它,然后它回答说,是啊,我就是这么蠢
    lujiajing1126
        19
    lujiajing1126  
       2015-01-20 15:07:01 +08:00
    @datou552211 你at错人了吧~应该是我楼上
    esyed
        20
    esyed  
    OP
       2015-01-20 22:03:48 +08:00
    @besto 写什么hook呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5202 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 07:15 · PVG 15:15 · LAX 00:15 · JFK 03:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.