无法在git中添加文件夹


21

我添加了新文件夹(实际上我是从另一个存储库中克隆了它,然后忘记了),然后在那做了一些更改。另外,当我尝试进行git add时,我在其他地方做了很多更改

# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#   (commit or discard the untracked or modified content in submodules)
#
#   modified:   protected/ext/SpecificFolder (modified content)
#

然后我记得也许有.git文件夹(因为以前我在那里进行过git clone)。我去了那个文件夹,也删除了不需要的文件(文件夹)和.git文件夹。我检查了git status,没什么奇怪的。然后提交并签出到另一个分支,突然我发现此文件夹未添加到上一次提交。实际上添加了文件夹,但是里面的文件被忽略了。现在,即使我正在尝试git add为该文件夹git status做任何事情,也不会显示任何更改:(

我能做什么 ?


6
如果其他人最终遇到我遇到的问题:我无法将文件添加到Git的子文件夹中。后来我发现该子文件夹有其自己的.git存储库,并且文件已添加到该存储库中,而不是添加到主文件夹中的存储库中。即使在Git GUI中,该子文件夹也显示为文件而不是文件夹。
2014年

Answers:


29

Git不跟踪目录;它不会跟踪目录。但只是其中的文件。

听起来您可能有一个忽略模式,该模式add什么都不做。您可以使用来查看被忽略的文件git status --ignored;然后可以使用git add --force protected/ext/SpecificFolder


1
不,它不存在git status --ignored,以某种方式我认为它与子模块连接
user1016265 2013年

1
这个命令是救生员。没有它,我将永远找不到哪个目录被忽略了。
IgorGanapolsky 2015年

哇.....我觉得那么傻现在使用Git了一段时间后,读这个事实^^
XandruCea

1
啊哈,最后。这是我的问题。我已经将.gitignore从父目录复制到子模块中。我忽略了“ config /”,后来在源目录下创建了一个名为config的目录。无法添加成功。现在解决了问题,谢谢:-)
Avec

7

Git不跟踪EMPTY目录。如果您的项目带有多层子目录,则git实际上会跟踪其中带有文件的目录。如果没有,那么它将是一个单一的文件存储库。


哇,这太简单了,但是该死。我读了这篇文章,然后说:“哦,我的上帝,这就是事实”
布赖恩说,请恢复莫妮卡

3

我恰好做了这个用户所做的事情:在另一个仓库中添加一个现有的git仓库。

症状是git将该目录识别为文件,因此无法添加目录的文件。

为了解决该问题,我删除了该.git文件夹中的文件夹,将该文件夹移动到另一个目录中,清除了索引,删除了我的存储库中的目录,然后能够正确添加该目录。

这样做的寓意是:不要在另一个仓库中添加一个仓库。


5
也可以通过运行git rm --cached path_to_submodule
Victor Marchuk


0

尝试在该目录中添加文件。

$ git add my-dir/index.html

如果看到类似以下的输出:

The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added

您的一个gitignores中有一条规则阻止您添加该目录。


0

在尝试将以前的子模块转换为普通子文件夹后,我发现了类似的副作用。

重新添加我尝试转换的文件夹似乎可以正常工作,但事实证明,其中的文件并未真正添加。

尝试在其中专门添加文件给了我更好的警告

git add sites/all/modules/contrib/transclusion/transclusion.module 
fatal: Pathspec 'sites/all/modules/contrib/transclusion/transclusion.module' is in submodule 'sites/all/modules/contrib/transclusion'
  • 因此,这与我手动尝试删除旧子模块的方式有关,因为没有适当的文档记录程序可以正确执行此操作。-我刚刚从.gitmodules中删除了它。实际上,需要其他东西来消除子模块的阴影。
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.