我如何将一个空的目录(不包含文件)添加到一个Git存储库中?
当前回答
但我建议:让一个构建脚本或部署脚本在网站上创建目录。
潜在问题:目录不再空。
现在,而不是试图得到 git 跟踪空的目录 允许探索其他选项. 也许(希望)你有一个部署脚本. 让部署脚本创建目录后 git 克隆. 或者你有一个构建脚本. 让构建脚本创建目录后编辑. 或者也许甚至修改工具本身检查并创建目录之前使用。
我认为这是对问题的更敏感的方法. 构建脚本和部署脚本是为了准备事物运行程序。 您的工具需要一个空的目录. 因此,使用这些脚本来创建空的目录。
独自行走是危险的,请遵循这些命令。
find -type d -empty
find -name .git -prune -o -type d -empty -print
下列命令可能会帮助您,如果您继承了一个包含“空白”目录的项目。
列出包含一个名为.gitkeep 的文件的每个目录:
find -type f -name .gitkeep
find -type f -printf "%h\n" | sort | uniq -c | sort -n
其他回答
添加另一个选项给女士。
假设你想添加一个目录到 git,这对于所有与 git 相关的目的,应该保持空白,从来没有跟踪其内容,一个.gitignore 如这里多次提议,会做这个技巧。
形式,如上所述,是:
*
!.gitignore
$ echo "*" > .gitignore && echo '!.gitignore' >> .gitignore && git add .gitignore
#!/bin/bash
dir=''
if [ "$1" != "" ]; then
dir="$1/"
fi
echo "*" > $dir.gitignore && \
echo '!.gitignore' >> $dir.gitignore && \
git add $dir.gitignore
使用此,您可以从您想要添加的目录中运行它,或者将目录引用为第一个和唯一的参数:
$ ignore_dir ./some/directory
另一个选项(回复 @GreenAsJade的评论),如果你想跟踪一个空的文件夹,可能在未来包含跟踪的文件,但将是空的现在,你可以从.gitignore 文件中删除 *,并检查它。
!.gitignore
我建议在文件中保持一个行是,它给了.gitignore 目的。 否则,某些下行可能会认为要删除它. 如果你在线上放一个评论,这可能有帮助。
基本上,一个源代码管理系统的目的是管理源代码,空的目录不是源代码,Git也经常被描述为内容跟踪器,再次,空的目录不是内容(相反的,实际上),所以它们不被跟踪。
我正在寻找这个问题,因为:我创建一个新的目录,它包含许多文件。在这些文件中,一些我想添加到Git存储库,有些不。
Untracked files:
(use "git add <file>..." to include in what will be committed)
../trine/device_android/
它不在这个新目录中列出单独的文件,然后我认为也许我只能添加这个目录,然后处理单独的文件,所以我谷歌“只添加目录”。
在我的情况下,我发现我只能在新目录中添加一个文件,我确信我想将其添加到Git。
git add new_folder/some_file
此后,“Git状态”将显示单独文件的状态。
安迪·莱斯特是对的,但如果你的目录只需要是空的,而不是空的,你可以把一个空的.gitignore 文件在那里作为一个工作室。
另一方面,这是一个实施问题,而不是一个基本的Git存储设计问题,正如在Git邮件列表上多次提到的那样,这一点没有实施的原因是没有人照顾足以提交一个插件,而不是它不能或不应该完成。
我也面临着空的目录的问题. 使用存储文件的问题是,你需要创建它们,并删除它们,如果它们不再需要(因为后来添加了子目录或文件。
这就是为什么我决定写一个开源工具,可以自动管理创建/删除此类存储文件。 它是为.NET 平台写的,并在 Mono (.NET for Linux) 和 Windows 中运行。
只需看看: http://code.google.com/p/markemptydirs
推荐文章
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- 如何从查找“类型d”中排除此/ current / dot文件夹
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '