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

 

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

 

时间: 2024-09-10 18:08:53

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

为啥我的Visual Studio2015 MVC5项目 没有添加Areas文件夹的选项?

问题描述 为啥我的VisualStudio2015MVC5项目没有添加Areas文件夹的选项?谢谢 解决方案

Excel中怎么制作表格并添加常用文件夹

  Excel中怎么制作表格并添加常用文件夹: 1.其实使用模板的使用是比较简单的,比如我们有一个表格如何把它保存成表格.点击另存为. 2.弹出保存的界面框,选择我们要保存的位置,这个时候我们选择了位置,在选择文件类型,模板 3.注意看这里的模板的文件名是ett,这个时候也可以区分一下xls文件名. 4.我们先打开一下这个模板文件,修改完成之后,我们在保存文件为xls模式就可以了. 5.我们可以看到这2个文件,模板是不会被修改的. 6.同时我们可以设置保存在常用文件夹,这时我们添加常用文件夹.点

excel模板怎么制作表格并添加常用文件夹?

  有的时候我们需要使用固定的表格进行不同的编辑,这个时候我们就可以把我们的模板保存起来想用的时候我们就可以使用了. 1.其实使用模板的使用是比较简单的,比如我们有一个表格如何把它保存成表格.点击另存为. 2.弹出保存的界面框,选择我们要保存的位置,这个时候我们选择了位置,在选择文件类型,模板 3.注意看这里的模板的文件名是ett,这个时候也可以区分一下xls文件名. 4.我们先打开一下这个模板文件,修改完成之后,我们在保存文件为xls模式就可以了. 5.我们可以看到这2个文件,模板是不会被修改

在Excel 2003中怎么添加常用文件夹?

  我们我应用Excel保存文件时,经常会选择一些指定的文件夹,我们有在 "另存为"对话框中看到右侧区域有一些文件家的快捷方式,我们也可以将常见文件夹添加到这个位置,具体方法如下: 方法/步骤 1.首先打开一个Excel 文档选择 "另存为"; 2.弹出 "另存为"工具栏; 3.下一步选择你要存放的位置,选择如下 4.看到"另存为"工具栏右上角,点击"工具"的下拉箭头,选择"添加到我的位置&quo

修改注册表在右键菜单中添加清空文件夹命令

  本文介绍用修改注册表的方法在右键菜单中添加清空文件夹命令.很多时候,你可能需要清空文件夹中的内容,但希望继续保留文件夹中原来的结构,如果逐一打开各个文件夹进行文件删除,确实比较麻烦.其实,我们可以在右键菜单中添加相关的命令,以后操作起来就方便多了. 打开注册表编辑器,依次定位到"HKEY_CLASSES_ROOTFoldershell",右击选择"新建→项",新建一个名为"清空文件夹内容"的子项,接下来右击该项,继续新建一个名为"c

xcode-Xcode6.1创建新项目的时候没有自动添加Framework文件夹是什么原因?

问题描述 Xcode6.1创建新项目的时候没有自动添加Framework文件夹是什么原因? Xcode6.1创建新项目的时候没有自动添加Framework文件夹是什么原因? 解决方案 苹果自6.1后,回收了很多东西,除了你说的之外,没有了pch文件,也没有了init方法,都需要自己创建自己写,但是另一方面,苹果也越来越支持使用ib了,很正差

升级包覆盖问题-installshield 2010做的升级包新添加的文件夹覆盖问题

问题描述 installshield 2010做的升级包新添加的文件夹覆盖问题 用installshield 2010做升级包时,在安装的时候会提示更新,能覆盖原有的文件夹(用户选择的路径目录,比如D:ABC),但新添加的文件夹就不会被添加到用户选择的路径下面,而是系统默认的C:Program Files...目录下,请教各位大神,怎么才能在更新时直接把新添加的文件保存到用户选择的路径(D:ABC) 解决方案 这种最好通过Custom Action来做 解决方案二: 既然是升级,就应该是覆盖,怎

visual studio-Visual Studio MVC5 没有添加Areas文件夹选项?

问题描述 Visual Studio MVC5 没有添加Areas文件夹选项? RT我的VISUAL STUDIO 2015 咋找不到添加Areas文件夹的选项呢?

为什么项目发布后是空文件夹

问题描述 为什么项目发布后是空文件夹..我开发的一个ASP.NET项目,,.在发布网站时..生成成功后确是空文件夹..其它项目都能生成成功`~请问一下这是什么原因啊??