Git默认忽略本身就是Git repos的目录吗?

时间:2015-07-21 02:53:34

标签: git

基本上,主题行中的问题,默认情况下Git会忽略本身就是Git repos的目录吗?

我在问,因为我在一个文件夹中创建了一个Git repo,其中包含一些子文件夹中的其他repos,以及我想要跟踪的其他一些文件。

我很惊讶地发现新的Git repo似乎会自动忽略子目录中那些Git repos的文件。

3 个答案:

答案 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

您可以通过以下网址了解有关它们的更多信息:

https://git-scm.com/book/en/v2/Git-Tools-Submodules