• 请不要在回答技术问题时复制粘贴 AI 生成的内容
esyed
V2EX  ›  程序员

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

  •  
  •   esyed · Jan 19, 2015 · 24560 views
    This topic created in 4134 days ago, the information mentioned may be changed or developed.

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

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

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

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