如何自动添加到版本控制新目录中的新内容?

时间:2016-03-09 23:01:26

标签: ruby-on-rails git git-add

我在fonts下创建了一个新的app/assets/目录,并使用fontsgit add fonts目录添加到版本控制中。
通常,当我在已经受版本控制的项目文件夹的任何位置创建或包含新文件时,此新文件会自动添加到索引中,并由git statusuntracked files.部分下报告 但是我注意到fonts中包含的每个新文件都不会自动包含在版本控制中。相反,如果我git添加已经包含文件的目录,那么这些文件也将被添加git。我怎样才能解决这个问题?
有没有办法创建和添加版本控制一个新目录,以便包含的每个新文件也自动添加到版本控制?

1 个答案:

答案 0 :(得分:0)

当您使用git init后跟git add -A和第一次提交初始化存储库时,您将创建一个Git目录,该目录是存储库的副本。存储库也是工作目录。
修改工作目录中的文件时,这些文件将在暂存区域中进行提交。然后,您可以提交这些更改并“更新”Git目录。

当你在工作目录中添加一个新文件时,这个文件也由Git在“未跟踪文件”部分中提交,因为它是新的,并且在Git目录中没有它的踪迹。

Git只会自动暂存新文件。
新的空目录被忽略,稍后也被Gi​​t删除(见下文)。
因此,当您添加一个新的空目录并尝试提交时,Git会警告您该提交不会进行任何更改,并建议使用--allow-empty选项,如果您反而希望保留无用的提交。

相反,在创建新目录后,您应该在其中放入一些文件。  实际上,通常让Git在工作和Git目录中保留一个空目录,有必要在该目录中添加一个名为.keep的空隐藏文件

此时git add fonts将成功,因为它会递归地将fonts目录中的所有文件添加到暂存区域。下一次提交会将新快照永久存储到您的Git目录中。或者,如果此提交没有意义,您可以继续处理您的工作目录,并且在时间到来时,按照Carpetsmoker的建议,执行git add -A后跟您的提交。

如果您使用文件补充新目录但不添加.keep空隐藏文件,稍后如果删除fonts目录中的所有字体文件,目录本身将被删除。