在我的项目中,有一个包含常用工具的文件夹,我希望将其包含在每个应用程序组件中。我只想要它的一个主版本,并且我希望像平常一样使用 git 命令更新其余副本。有没有办法做到这一点,同时将所有内容都保存在同一个存储库中?我知道 get 子模块适用于多个存储库,但 \xe2\x80\x99t 似乎只适用于单个存储库。有人对此事有任何见解吗?
\n您可能想调查一下git subtree。看看这两篇文章:
它的文档不在 git-scm.org 上提供(我无法说出原因),您可以通过键入 来阅读它,或者从的 repogit help subtree中的源代码中读取它:git
从技术上讲,您可以将存储库作为子模块包含在其内部;不寻常的东西来自:
假设您的代码如下所示:
Readme.md
libs/util/fileA.py
libs/util/fileB.py
src/main.py
Run Code Online (Sandbox Code Playgroud)
并且您希望将内容libs/util/作为“自托管”子模块。
这意味着您的存储库的某个提交的完整内容应该是:
fileA.py
fileB.py
Run Code Online (Sandbox Code Playgroud)
在同一个存储库中,您将拥有代表“完整项目”的提交和代表“只是 util lib”的提交,它们并排放置。
这是完全可以管理的,一开始只是令人惊讶。
master由于您的存储库可能已经有一个名为代表“完整”项目状态的分支,因此您不能将该名称用于“子模块”部分的分支。
最简单的方法是选择一组专用于该子模块的名称(例如:)util/*并坚持使用。
在同一分支中提交完整存储库并仅提交子模块没有多大意义。专用于子模块的分支与“完整”项目的分支没有关系。
再说一次:git 可以完美地管理它。这是在存储库中创建此类起始分支的一种方法:
# from your repo's 'master' branch :
git checkout -b util/master
git filter-branch --subdirectory-filter libs/util
Run Code Online (Sandbox Code Playgroud)
当您查看git-subtree工作原理时,它允许您处理相同类型的设置:存储在同一存储库中的不相关分支,并在您选择的位置检出子分支。
它的主要优点是:由于它从一开始就打算以这种方式工作,因此这些命令可能会给您带来更少的摩擦,并且更少地在您的存储库中搞砸事情。
| 归档时间: |
|
| 查看次数: |
3355 次 |
| 最近记录: |