Git添加所有子目录


84

我在将文件夹及其所有子目录添加到git存储库时遇到问题。经过一番谷歌搜索后,我意识到这是一个非常受欢迎的问题,并且我尝试了每个建议都没有碰到运气,特别是git-add手册页中的建议。我什至git add -A没有成功。为了简单起见,假设我将git储存库初始化为Dir1。然后,我具有以下文件的目录结构。

Dir1/file1-1.txt
Dir1/file1-2.txt
Dir1/Dir2/file2-1.txt
Dir1/Dir2/Dir3/file3-1.txt

我的真实文件的子目录深度为5-6级,那么是否有git命令将每个子目录中的所有文件添加到我的存储库中?现在,当我从手册页中执行建议时,git add Dir1/\*可以Dir2在我的仓库中看到它,但是它显示为绿色文件夹,但无法打开它,这使我相信其中的所有文件/文件夹都Dir2没有得到添加。任何帮助将不胜感激。我是新的git用户(不到一个星期的使用时间),因此请尝试将说明保持在初学者的水平。


2
git add任何目录的自动递归。git add .在仓库的顶层使用应该在其中添加所有内容。如果不是,.gitignore则在起作用(本地或全局)。
Nevik Rehnel 2013年

你检查了.gitignore吗?也许您的目录被忽略了。
2013年

2
输出是git status --ignored什么?
年度

1
只是为了帮助看到此问题的其他人,如果您创建的目录中没有任何文件,则不会git add .添加这些文件。您必须在目录中添加一些文件,以便git跟踪它们。
2015年

Answers:


106

做,

git add .

而在存储库的根目录中。它将添加所有内容。如果这样做git add *,它将仅添加*指向的文件。单点表示目录。

如果在执行上述命令后未将目录或文件添加到git index / repo中,请记住检查.gitignore文件中git是否将其标记为已忽略。


8
刚试过这个。还是行不通。我做了git add。git commit git push origin master我缺少什么吗?
乔什·布拉德利

4
假设您的文件在Dir1下,则您无需执行cd Dir1; git init; git add . ; git commit;其他任何操作。如果.gitignore忽略某个目录中的文件,但仍要添加它们,则需要执行git add -f .而不是git add .
Kalle Pokki 2013年

5
我尝试了“ git add”。但是没有用 第二天,我回去尝试,一切都“正常”,谢谢!当灯光再次亮起时,一定是那些午夜的虫子消失了。
Josh Bradley

2
git添加 不起作用,并且不会递归添加子目录及其内容。
知道不多

您可能需要打开一个新的命令窗口才能使此命令一致地工作。
笼子响尾蛇


13

如果子目录本身是git存储库(即.has有.git目录),请检查是否存在问题ls -a

要删除,请转到子目录和rm .git -rf


2
在OSX 10.11.6终端用途:室射频git的
塞巴斯蒂安REMY

2
是不是一样?
PaulB


1

我不能确定是否是这种情况,但是对我来说似乎有问题的是某些子目录中有.gitignore文件。同样,我不能保证,但是删除这些之后一切正常。


0

最有可能的.gitignore文件小号在作怪。请注意,.gitignore文件不仅可以出现在存储库的根目录级别,还可以出现在任何子级别。您可以从根目录尝试此操作以找到它们:

找 。名称“ .gitignore”

然后检查结果以查看哪些可能阻止添加您的子目录。

也可能涉及子模块。检查有问题的目录中的“ .gitmodules”文件。


0

之前,我尝试添加的(子)文件夹的名称以“ _Something_”开头时,我就看到了这个问题。

我删除了下划线并成功了。检查文件夹中是否包含可能导致问题的字符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.