git - 在 Git 中调整子模块
问题描述
假设我有一个 repoparent
和一个 repo child
,其中最新的是第一个的子模块。
我的child
回购由第三方维护。我想跟踪这个第三方所做的最新更新,同时也对这个子模块进行我自己的特定更改,以使其与我的父 repo 兼容。
这样做的正确方法是什么?
解决方案
这可能不是使用子模块的最优雅的方式,但我有这种确切的情况,我通过cd
-ing 进入子模块并从那里作为经典的 Git 存储库处理它来处理它。
这样,很容易将我自己的child
项目 fork 设置为origin
,将原始child
项目设置为upstream
. 我可以从upstream
原始项目(由第三方维护)中获取最新更新,进行自己的更改并将它们推送到origin
以便可以共享。
要更新parent
repo,我只需暂存并将更改提交到子模块。
为了知道parent
在我提交这些更改时对项目的子模块进行了哪些更改,我在我的 git 配置文件中有:
[diff]
submodule = log
当从parent
项目中运行差异操作时,这将显示子模块的日志。这不是必需的,但它很方便,因为我不必去子模块知道我做了什么,等等。
git config diff.submodule log
您可以通过从您的存储库运行来在本地parent
设置它,也可以使用git config --global diff.submodule log
.
git diff --submodule
请注意,通过从父 repo 运行而不是git diff
(如果您不想使用配置文件)运行,您会得到相同的结果。
推荐阅读
- asp.net-mvc - 将页脚行添加到 grid.mvc
- jquery - 为响应式导航菜单添加向下滑动效果
- swift - 未在视图中更新的结构数组
- docker - 为什么不能在自定义 SM 映像上运行 S3FS,因为 SM 不运行具有特权的 docker 映像
- sql - 我有一个带有 .CSV 文件的 SSIS 包,其中的数据是这样的
- xaml - 我在列表视图中的菜单项未显示 Xamarin
- c# - 是否有可能仅从该对象中了解包含另一个类的对象的类的一些信息?
- c++ - OpenMP 嵌套未关闭
- ruby-on-rails - 为什么这个 Rails 应用无法部署到 GCLOUD?
- python - 使用掩码替换 numpy 数组中的字符串会导致字符串被截断