基本上,主题行中的问题,默认情况下Git会忽略本身就是Git repos的目录吗?
我在问,因为我在一个文件夹中创建了一个Git repo,其中包含一些子文件夹中的其他repos,以及我想要跟踪的其他一些文件。
我很惊讶地发现新的Git repo似乎会自动忽略子目录中那些Git repos的文件。
答案 0 :(得分:2)
是的,这是Git的一个功能。如果您在子文件夹中初始化Git存储库,然后尝试将该文件夹添加到父文件夹的Git存储库,该文件夹的Git历史记录将不包含子文件夹的文件。
您可以修改这些文件并尝试添加它们,但是您会收到modified: some_dir (modified content, untracked content)
之类的消息。仅跟踪目录名称。
创建子模块以解决这种常见情况。它们允许您将Git存储库保存为另一个Git存储库的子目录。如果您需要跟踪父文件夹和子文件夹,子模块将允许您这样做。
This documentation提供了分步指南。
答案 1 :(得分:0)
如果您正在管理具有子回购的回购,我建议您查看子树而不是子模块,原因如下:
有几个原因可以让您更好地使用子树:
- 管理简单的工作流程很简单。
- 支持旧版本的git(甚至在v1.5.2之前)。
- 在完成超级项目的克隆后,子项目的代码可用
请参阅:http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/
答案 2 :(得分:-1)
默认情况下,Git会假设您的项目是一个整体并且将包含所有文件夹(即使它们是单独的项目)。如果您希望将它们视为单独的,可以将子文件夹中的一个设置为子模块:
$ cd MainProject
$ git submodule add git@bitbucket.com:me/apps.git apps
$ git commit -a -m "added a submodule"
$ git push
您可以通过以下网址了解有关它们的更多信息: