git - 如何正确更新 git 子树
问题描述
假设我有一个存储库 Repo,现在我想添加文件夹 Common 这是单独的存储库。所以结构应该如下:
Repo
myfile.txt
Common
anotherfile.txt
据我所知,至少有两种方法可以做到这一点:subtrees和submodules。在阅读了一些 git 教程和手册后,我得出结论,子树就是我想要的。
好的,所以我已将该文件夹添加到我的存储库中:
git subtree add --prefix Common https://github.com/my/Common.git master --squash
好的,现在看起来和预期的一样。一段时间后,我想更新子树文件夹。但不幸的是,到目前为止我发现的唯一方法是:
git subtree pull --prefix Common https://github.com/my/Vommon.git master --squash
为什么我要再次输入存储库 URL?那不是存储在git结构中的某个地方吗?如果我有几个子树怎么办?我不认为有人记得所有的网址。
有没有办法以某种简单的方式做到这一点?也许我错过了什么?
解决方案
为什么我要再次输入存储库 URL?那不是存储在git结构中的某个地方吗?
没有。URL 与子模块一起存储,但不与子树一起存储。子树完全集成到存储库中,它不记得它是一个单独的子树,它不记得它来自哪里。
如果我有几个子树怎么办?
创建 git 别名或 shell 别名或脚本来拉/推许多子树。
或者切换回子模块。它们有很多缺点,但至少它们记得它们是从哪里克隆的。
推荐阅读
- java - 在参数化 jUnit 4 测试中访问参数 Collection<> 的问题
- docker - 使用 Docker 工作流程清洁操作系统
- html - 溢出元素内的粘性元素
- javascript - 角度 6 请添加@NgModule 注释
- node.js - 我可以/如何使用 Postman 连接到 MLAB DB?
- c# - 为什么 break 会终止整个程序而不仅仅是当前线程
- javascript - 表单验证错误通过路由持续存在
- python - Python 3.x 中函数内多个变量的更改被重置为默认值
- python-3.x - 无法使用 Python pathlib 在特定文件夹中创建新目录
- javascript - 循环状态并创建多个组件