我们在 github 上有一个 git 存储库,它依赖于第三方库,或者更确切地说,它的两个文件在一个单独的目录中。我需要将这个第三方目录绑定到我项目中的目录,这样git clone就可以git pull从第三方仓库克隆它。
据我了解,这可以通过 help 来完成git subtree,但不清楚如何操作。
我们在 github 上有一个 git 存储库,它依赖于第三方库,或者更确切地说,它的两个文件在一个单独的目录中。我需要将这个第三方目录绑定到我项目中的目录,这样git clone就可以git pull从第三方仓库克隆它。
据我了解,这可以通过 help 来完成git subtree,但不清楚如何操作。
这种情况可以部分解决。
首先,您需要设置您的项目(存储库)对库存储库的依赖性,这可以通过两种方式完成 -
git subtree或git submodule. 它们的工作方式略有不同,但它们允许您将项目中的某些目录设为嵌套存储库。但是从 git 的角度来看,这 2 个选项会有不同的考虑。您可以阅读很多关于这两个命令的工作差异的信息,包括此处。值得注意的是,subtree 在历史上是一个较旧的命令,如果您的 git 版本不支持它,请不要担心,而 submodule 则较新。此外,通过子树或子模块添加的嵌套存储库的配置方式是,在拉取时,不会合并整个项目,而只会合并特定目录(或目录,或文件)。为此,它很合适
git sparse checkout,您可以阅读很多有关它的信息。Sparse 只是设计用于从存储库中选择性地合并文件。只有一个问题与
git pull. 事实上,要更新,例如,一个子树,一个单独的命令形式git subtree pull ...。您可以尝试使用 git hook 解决这个问题,从可能的列表中选择您需要的一个,并编写适当的 shell 脚本来更新嵌套的存储库文件。钩子文档PS 所有指向英文文档的链接