git add --all 为啥不能添加空文件夹,这样设计的初衷是?

好多项目还得弄个假文件在空文件夹里面占位
这个算设计失误吧,见 https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F

Currently the design of the git index (staging area) only permits files to be listed, and nobody competent enough to make the change to allow empty directories has cared enough about this situation to remedy it.

大概就是,有能力搞的人不关心,没能力搞的人搞不动……

作者:Leedy
链接:http://www.zhihu.com/question/29811994/answer/45721540
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

大概是linus一开始就把快照设计成只有文件组成,后来想想要改太难,就算了吧。反正你们可以用假文件来占位(oh,so linux!),为什么要linus亲自实现它。

现在的主流做法是在空文件夹里放置一个.gitkeep文件

加个.gitconfig文件在里面比较实用,也不会觉得突兀。虽然绝大多数时候这个文件也没什么卵用。

一、前言
git add命令主要用于把我们要提交的文件的信息添加到索引库中。当我们使用git commit时,git将依据索引库中的内容来进行文件的提交。
二、基本
git add <path>表示 add to index only files created or modified and not those deleted 
我通常是通过git add <path>的形式把我们<path>添加到索引库中,<path>可以是文件也可以是目录。
git不仅能判断出<path>中,修改(不包括已删除)的文件,还能判断出新添的文件,并把它们的信息添加到索引库中。
三、git add -u
git add -u 表示 add to index only files modified or deleted and not those created 
git add -u [<path>]: 把<path>中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。
省略<path>表示.,即当前目录
四、git add -A
git add -A: [<path>]表示把<path>中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。
省略<path>表示.,即当前目录。
五、git add -i
我们可以通过git add -i [<path>]命令查看<path>中被所有修改过或已删除文件但没有提交的文件,
并通过其revert子命令可以查看<path>中所有untracted的文件,同时进入一个子命令系统。
比如:
 git add -i
           staged     unstaged path
  1:        +0/-0      nothing branch/t.txt
  2:        +0/-0      nothing branch/t2.txt
  3:    unchanged        +1/-0 readme.txt

*** Commands ***
  1: [s]tatus     2: [u]pdate     3: [r]evert     4: [a]dd untracked
  5: [p]atch      6: [d]iff       7: [q]uit       8: [h]elp
What now>
这里的t.txt和t2.txt表示已经被执行了git add,待提交。即已经添加到索引库中。
readme.txt表示已经处于tracked下,它被修改了,但是还没有被执行了git add。即还没添加到索引库中。
5.1、revert子命令
可以通过git add -i的revert子命令(3: [r]evert)把已经添加到索引库中的文件从索引库中剔除。
(3: [r]evert)表示通过3或r或revert加回车执行该命令。执行该命令后,git会例出索引库中的文件列表.
然后通过数字来选择。输入"1"表示git会例出索引库中的文件列表中的第1个文件。
"1-15"表示git会例出索引库中的文件列表中的第1个文件到第15个文件.回车将执行。
如果我们不输入任何东西,直接回车,将结束revert子命令,返回git add -i的主命令行。
5.2、update子命令
可以通过update子命令(2: [u]pdate)把已经tracked的文件添加到索引库中。其操作和revert子命令类似。
5.3、add untracked子命令
通过add untracked子命令(4: [a]dd untracked)可以把还没被git管理的文件添加到索引库中。其操作和revert子命令类似。
5.4、diff子命令
可以通过diff子命令(6: [d]iff)可以比较索引库中文件和原版本的差异。其操作和revert子命令类似。
5.5、status子命令
status子命令(1: [s]tatus)功能上和git add -i相似
5.6、quit子命令
quit子命令(7: [q]uit)用于退出git add -i命令系统
六、帮助
我们可以通过git add -h命令来看git add命令的帮助文档。
 git add -h
usage: git add [options] [--] <filepattern>...
    -n, --dry-run         dry run
    -v, --verbose         be verbose
    -i, --interactive     interactive picking
    -p, --patch           select hunks interactively
    -e, --edit            edit current diff and apply
    -f, --force           allow adding otherwise ignored files
    -u, --update          update tracked files
    -N, --intent-to-add   record only the fact that the path will be added later
    -A, --all             add changes from all tracked and untracked files
    --refresh             don't add, only refresh the index
    --ignore-errors       just skip files which cannot be added because of errors
    --ignore-missing      check if - even missing - files are ignored in dry run

http://blog.csdn.net/hudashi/article/details/7664374

git add --all 为啥不能添加空文件夹,这样设计的初衷是相关推荐

  1. git 上传空文件夹

    空文件夹默认不会上传到远程仓库.如果想在远程仓库中保存一个空文件夹作为占位符的话,可以在空文件中创建一个.gitkeep 文件即可, 说白了就是再创建一个空文件,使得你的文件夹不是空文件夹了...这是 ...

  2. Unity 在编辑器菜单栏里添加清除空文件夹

    在 Assets/App/Editor 路径下新建 ClearEmptyFolder 文件夹,并在该文件夹下新建文件 EmptyFolderClear.cs using System.IO; usin ...

  3. 服务器bat脚本删除空文件夹,windows批处理命令(1)——右键清理空文件夹

    日常学习工作免不了使用电脑,而作为一个强迫症,看到电脑中有空文件及其不爽: 再加上使用一些Git工具时含空文件不允许提交,因此就寻思着可不可以写一个脚本直接一键清理空文件夹. 最终实现的效果如下: 最 ...

  4. Unity自动清理空文件夹

    Unity 自动清理空文件夹 因为项目管控用的是Git,没法上传空文件夹.但是Unity又会对空文件夹生成相应的meta文件.导致Git提交的时候会提交这些meta文件.当项目中其他人拉下来的时候Un ...

  5. 用bat批处理程序通过DOS命令行删除所有的空文件夹

    用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我 ...

  6. vscode 添加新建文件夹快捷键 (配置 when 属性)

    实现目标 在获取左侧项目栏文件夹焦点情况下 添加新建文件夹的快捷键 Shift + A 我本来是个atom忠实粉丝, 但是atom使用window10自带输入法在书写汉字时总是会出现首字母缺失的情况, ...

  7. 关于VC中删除非空文件夹

    要删除文件夹,我们可以用到SHFILEOPSTRUCT这种结构体,利用该结构体可以删除空文件夹和非空文件夹. typedef struct _SHFILEOPSTRUCT{      HWND hwn ...

  8. Keil uVision添加新文件夹

    Keil uVision5是款比较优秀的IDE编译器 最近接手一个项目,代码已经形成一个版本,在此基础上新增一些新功能 由于不破坏原先结构的目的,因此新增的部分采用独立方式(存放在独立的文件夹),一开 ...

  9. linux删除文件夹下所有文件_本地文件快速搜索+批量删除空文件夹

    本号所有资源版权归原作者所有,如有侵权请加小编微信删除.本号免费分享,仅供学习交流,下载后24小时内请自觉删除,切勿用于商业用途,否则后果自负! 今天第一个分享是一个本地文件快速搜索神器Everyth ...

最新文章

  1. 向iOS越狱彻底说再见!
  2. 《大型网站技术架构》《K8S进阶实战》等书籍!送45本!读完工资多个0!
  3. 香港浸会大学计算机系月入4万博士你还不心动吗?
  4. 趋势修改服务器地址,趋势客户端修改连接服务器
  5. IT人母亲的美国之行(7)
  6. 低至4.7折起!戴尔OptiPlex商用台式机限时特惠,重磅来袭!
  7. ubuntu下安装配置nfs
  8. cordova+vue项目整合
  9. php开源Plogger用法
  10. 大连东软信息学院附近java_大连东软信息学院暑期实训java项目答辩答案
  11. 深度相机(六)--Kinect v2.0 手势样本库制作
  12. django orm 操作表
  13. CMMI认证适用的行业范围
  14. 深入浅出统计学-第二章
  15. ffmpeg中的pcm格式
  16. oracle中rollup函数与mysql中with rollup区别
  17. idea安装插件时一直转解决方法
  18. 第十二周项目五-----迷宫问题之图深度优先遍历解法
  19. python 基础知识汇总
  20. web01-html and html5

热门文章

  1. 我用90年代的古董电脑训练CNN
  2. IBM又双叒叕要分拆了,IT基础设施部门将剥离,未来专注云计算和AI
  3. 我长了一条日本制的尾巴:智能配合身体运动,增强平衡感,把我变成“改造人”| SIGGRAPH...
  4. 滴滴自动驾驶,现在是一个怎样的“富二代”创业项目?
  5. 马自达新车全面取消触摸屏,意外引得叫好声一片
  6. docker image镜像的发布
  7. Hadoop搭建完全分布式
  8. eosjs v20 中文文档
  9. logback.xml配置
  10. 【Linux使用技巧】linux 死机了怎么办