1

我是 Git 新手,我正在尝试将一个子文件夹上传到我的“主”项目中,但目前无法。我已经通过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 显示文件夹中没有文件。实际上文件夹显示为文件。是否有可能将包含文件夹视为子模块?如果我在文件夹中提交,则这些文件会在它们前面列出“创建模式”。


当我推送文件夹时,包含文件夹中有文件。这是在包含文件夹中添加“config.php”文件后得到的输出:

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

我没有使子目录成为子模块,但它显示为一个?

4

2 回答 2

3

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

看看git 会忽略空文件夹吗?

更新

既然你已经更新了你的问题,我会更新我的回复。您所做的是一个容易犯的错误,如果您无休止地运行git add directory/这可以向您的存储库添加一个子模块。

看看我去年自己的问题:我在 Github 上的目录发生了什么变化?

于 2011-04-25T22:29:39.180 回答
2

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

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

rm -rf includes/.git

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

于 2011-04-26T04:18:06.843 回答