Git忽略了子目录上传

时间:2011-04-25 22:22:28

标签: git assembla

我是Git的新手,我正试图将一个子文件夹上传到我的'master'项目,但目前无法。我已经通过Git上传的根文件夹中的所有文件,并可以推送和克隆根文件夹。我在根文件夹(root / includes)中有一个名为“includes”的文件夹,其中包含5个.php文件,我想上传。目前,克隆项目时有一个名为“includes”的文件夹,但其中没有文件。放置在“includes”文件夹中的文件是从另一个项目复制的。我已经尝试再次克隆项目并推送“includes”文件夹中的文件,但没有运气。以下是我克隆项目并成功检索根文件后的命令跟踪:

add -A includes
cd includes
add -A 
cd ../
commit -a -m "uploading includes folder"
git push origin

Assembla显示文件夹中没有文件。实际上,该文件夹显示为文件。是否有可能将includes文件夹视为子模块?如果我在文件夹中提交,则文件将在其前面以“创建模式”列出。


当我按下文件夹时,includes文件夹中有文件。这是我在include文件夹中添加“config.php”文件后得到的输出:

add config.php
fatal: Path 'includes/config.php' is in submodule 'includes'

我没有将子目录设为子模块,但是它显示为一个子模块?

2 个答案:

答案 0 :(得分:3)

如果目录中没有文件,则在运行git add时git不会暂存目录。 Git并不关心像SVN这样的文件和目录,而是跟踪内容的变化。

请参阅does git ignore empty folders?

<强>更新

由于您已更新了问题,我将更新我的回复。如果您运行git add directory并且没有结束/,那么您所做的就是一个容易犯的错误,这可以为您的存储库添加一个子模块。

去年查看我自己的问题:What's happened to my directory on Github?

答案 1 :(得分:2)

啊,你的更新表明你在混合中有子模块。如果你不知道那些是什么,那么这可能是一个意外(很容易修复)。您可能会发现主目录中有.git目录,都是includes/.git目录。

您的问题的解决方案是删除includes/.git目录:

rm -rf includes/.git

通常,Git将其所有元数据存储在目录树顶部的单个.git子目录中。但是,如果您正在使用子模块,则其他目录也将包含.git个目录。