我是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'
我没有将子目录设为子模块,但是它显示为一个子模块?
答案 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
个目录。