2011-04-25 143 views
1

我是Git的新手,我试图让一个子文件夹上传到我的'master'项目中,但目前无法执行。我已经获得了通过Git上传的根文件夹中的所有文件,并可以推送和克隆根文件夹。我有一个名为'includes'的文件夹,其中包含5个.php文件的根文件夹(root/includes),我想上传。目前,当我克隆项目时,有一个名为“includes”的文件夹,但其中没有文件。放置在“包含”文件夹中的文件是从另一个项目复制的。我试图再次克隆项目,推动在“包括”文件夹中的文件,但没有luck.The以下是我的命令线索我会克隆该项目,并成功地检索根文件后:Git忽略子目录上传

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

Assembla节目该文件夹中没有文件。实际上,该文件夹显示为一个文件。包含文件夹可能被视为子模块吗?如果我在文件夹中提交,那么这些文件将在其前面以“创建模式”列出。


当我推动文件夹时,包含文件夹中有文件。这里是一个输出,我在加入了“config.php中”文件后,获得包括文件夹:

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

我没有做子目录的子模块,但它表现为一个?

+0

你可以在添加文件后显示'git status'的输出吗? – 2011-04-25 22:25:30

回答

3

如果目录中没有文件,那么当您运行git add时,git将不会暂存目录。 Git不关心像SVN这样的文件和目录,它跟踪内容的变化。

does git ignore empty folders?

更新

既然你已经更新了你的问题,我会更新我的回应。如果您运行git add directory而没有结束/,则可以将子模块添加到您的存储库中,这样做很容易犯一个错误。

看到了自己的问题,去年:What's happened to my directory on Github?

2

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

的解决问题的方法是去除includes/.git目录:在目录树的顶部

rm -rf includes/.git 

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