嵌套的git仓库?

我可以嵌套git存储库吗? 我有:

/project_root/ /project_root/my_project /project_root/third_party_git_repository_used_by_my_project 

git init /添加/ project_root是否有意义,以便本地pipe理一切,或者我必须分别pipe理my_project和第三方吗?

6 Solutions collect form web for “嵌套的git仓库?”

您可能正在寻找称为子模块的Gitfunction。 此function可帮助您pipe理嵌套在主存储库内的相关存储库。

将第三方库放在单独的存储库中,并使用子模块将它们与主项目相关联。 这是一个步骤:

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

在决定如何分割回购协议时,我通常会根据多长时间来修改它们来决定。 如果它是一个第三方库,只是你正在做的改变是升级到一个更新的版本,那么你一定要把它从主项目中分离出来。

只是为了完整:

还有另一个解决scheme,我会build议: 子树合并 。

与子模块相比,它更容易维护。 您将以正常方式创build每个存储库。 在你的主版本库中,你想合并主目录下的其他版本库的master(或其他分支)。

 $ git remote add -f OtherRepository /path/to/that/repo $ git merge -s ours --no-commit OtherRepository/master $ git read-tree --prefix=AnyDirectoryToPutItIn/ -u OtherRepository/master $ git commit -m "Merge OtherRepository project as our subdirectory"` 

然后,为了将另一个存储库拉到你的目录(更新它),使用子树合并策略:

 $ git pull -s subtree OtherRepository master 

我现在使用这种方法多年,它的工作原理:-)

更多关于这种方式,包括比较它与子模块可以在这个git howto文档中find 。

git-subtree将帮助你在一棵树中处理多个项目为它们保留可分离的历史。

你可以添加

 /project_root/third_party_git_repository_used_by_my_project 

 /project_root/.gitignore 

这应该防止嵌套回购被包括在父回购,你可以独立工作。

但是:如果用户在父仓库中运行git clean -dfx,它将删除被忽略的嵌套仓库。 另一种方法是符号链接文件夹,忽略符号链接。 如果你运行git clean,符号链接被删除,但嵌套的repo将保持不变,因为它确实在其他地方。

我会为每个项目使用一个存储库。 这样,历史变得更容易浏览。

我也会检查我正在使用的第三方库的版本,使用它的项目的存储库。

  • git update-index --assume-unchanged和git reset
  • 将标签添加到合并请求
  • Git - 权限被拒绝(公钥)
  • 获取git中的标签之间的提交列表
  • Git unmerged path问题
  • 如何防止使用寻呼机的git diff?
  • 如何删除Github上的最后n个提交和本地?
  • github连接其他回购
  • git拉,而不是在一个git目录
  • “致命的:不好的修订”是什么意思?
  • 是否有可能从远程位置克隆gitconfiguration?