Git添加所有子目录

时间:2013-01-31 07:50:42

标签: git repository git-add

我在将文件夹及其所有子目录添加到我的git存储库时遇到问题。我意识到这是一个非常受欢迎的问题,在做了一些谷歌搜索,我已经尝试了每个建议没有运气,特别是man page on 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用户(不到一周的使用时间),所以请尽量保持初学者的指示。

8 个答案:

答案 0 :(得分:91)

DO,

git add .

在存储库的根目录中。它会添加一切。如果您执行git add *,则只会添加*个文件。单点指的是目录。

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

答案 1 :(得分:9)

如果子目录本身是git存储库,也可能遇到问题 - 即.has .git目录 - 请与ls -a一起检查。

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

答案 2 :(得分:7)

简单解决方案:

git rm --cached directory
git add directory

答案 3 :(得分:5)

也很挣扎,但打字正确

git add -f ./JS / *

其中JS是我的文件夹名称,其中包含子文件夹和文件

答案 4 :(得分:1)

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

答案 5 :(得分:0)

很可能.gitignore文件 s 正在发挥作用。请注意,.gitignore文件不仅可以出现在repo的根级别,还可以出现在任何子级别。您可以从根级别尝试查找它们:

找到。 -name" .gitignore"

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

也可能涉及子模块。检查" .gitmodules"的违规目录。文件。

答案 6 :(得分:0)

我之前看到过这个问题,当我试图添加的(子)文件夹的名称以“_Something _”开头时

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

答案 7 :(得分:0)

如果某人 git add . 不起作用(就像我的情况一样),请使用 git add ./*,其中包含所有子目录中的所有文件。我的目录结构是:

MainDirectory
|_.git
|_README
|_folder1
|   |_file1
|   |_file2
|   |_subfolder1
|   |    |_file3
|   |    |_file4
|   |_subfolder2
|        |_file5
|        |_file6
|_folder2 
|   |_file1
|   |_file2
|   |_subfolder1
|   |    |_file3
|   |    |_file4
|   |_subfolder2
|        |_file5
|        |_file6
|_otherfiles

执行 git add ./* 包括一个或更多级别深度内的所有内容,而 git add . 仅添加当前级别的文件。