如何将对子模块所做的更改的提交推送到主 git 存储库中?

2024-02-10

我决定将我的应用程序存储库从 SVN 切换到 git。

我的回购结构是这样的:

~/AndroidStudioProjects/MyMine $ tree -L 1
.
├── ActionBarSherlock
├── Android-Universal-Image-Loader
├── Android-ViewPagerIndicator
├── Crouton
├── ListViewAnimations
├── MyMine
├── SlidingMenu
├── aFileChooser
├── drag-sort-listview
└── out

10 directories, 0 files

如您所见,我有很多库,我的应用程序的核心位于MyMine folder.

我已将库添加为 git 子模块:

~/AndroidStudioProjects/MyMine $ cat .gitmodules
[submodule "ActionBarSherlock"]
    path = ActionBarSherlock
    url = https://github.com/JakeWharton/ActionBarSherlock.git
[submodule "Android-Universal-Image-Loader"]
    path = Android-Universal-Image-Loader
    url = https://github.com/nostra13/Android-Universal-Image-Loader.git
[submodule "Android-ViewPagerIndicator"]
    path = Android-ViewPagerIndicator
    url = https://github.com/JakeWharton/Android-ViewPagerIndicator.git
[submodule "Crouton"]
    path = Crouton
    url = https://github.com/keyboardsurfer/Crouton.git
[submodule "drag-sort-listview"]
    path = drag-sort-listview
    url = https://github.com/bauerca/drag-sort-listview.git
[submodule "ListViewAnimations"]
    path = ListViewAnimations
    url = https://github.com/nhaarman/ListViewAnimations.git
[submodule "SlidingMenu"]
    path = SlidingMenu
    url = https://github.com/jfeinstein10/SlidingMenu.git
[submodule "aFileChooser"]
    path = aFileChooser
    url = https://github.com/iPaulPro/aFileChooser.git

现在,假设我对其中一个库/子模块进行了更改。但我不想将这些更改推到其根源,因为:

  • 作者可能/将会拒绝我的提交
  • 我的改变只与我相关
  • 我的更改只是一行修改,以适应代码,以便它在我的项目中编译

然而,我do想要的是将我的提交(对这些子模块进行的)推送到我的项目的起源。这是因为这些更改对于编译我的项目是必要的。因此,如果我决定将完整的存储库克隆到新的开发机器,我希望它们位于存储库中。或者,如果一个新人加入团队并需要设置其开发机器。

因此,我已提交对其中一个库所做的修改。然后,我将相应的子模块提交到我的存储库,并将其推送到原点。

问题在于,在(我的服务器的)源上,子模块项目指向错误的快照,因为该快照仅存在于我的本地存储库上,而不存在于源上。我无法推送它,因为 git 会尝试将提交推送到子模块的原点,而这不是我项目的原点。

如何提交对子模块所做的更改,并从我的主存储库中获取这些更改?所有这些都没有将子模块推到其原点?

如果我使用的术语或方法看起来愚蠢或不合适,我深表歉意。正如我所说,我正在尝试切换到 git,即使我花了一些时间阅读 git 书籍,我也可能误解了一些流程或词汇。


据我所知,你不能这样做。

您需要分叉子模块存储库并将项目的子模块指向分叉而不是当前位置。然后,您可以将更新推送到您的分支,并在那里维护它们,并且您的主项目可以指向您的更改。

您的另一个选择是仅将更改作为补丁维护,并让构建系统在编译之前应用它们。

也许有人会为你带来一个巧妙的技巧。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将对子模块所做的更改的提交推送到主 git 存储库中? 的相关文章

  • git Push Remote:警告:hooks.mailinglist 有多个值

    我刚刚从使用 gitosis 升级到 gitolite 电子邮件通知适用于所有存储库 但对于 gitolite admin 存储库 我在推送时收到此警告 推送很好 git push remote warning hooks announce
  • 使用 Homebrew 安装 Git 时出现问题 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Homebrew 升级 Git 时出现问题 https stackoverflow com questions 12362021 problems upgrading git with home
  • “submodule”似乎是一个 git 命令,但我们无法执行它

    我已经克隆了一个 git 存储库 它是一个 Angular 7 和 NET Core 应用程序 项目中一切正常 但是当我尝试恢复 npm 包时 出现以下错误 Microsoft TeamFoundation Team Explorer Gi
  • git 忽略行结尾

    我知道已经有人问过类似的问题 但我仍然无法让它发挥作用 我的项目在使用不同操作系统的人之间共享 而我使用的是 OSX 另外 并不是每个人都使用 git 有时我最终不得不提交其他人的更改 有时 git 会突然说有待处理的更改 查看文件 它们看
  • git 查找胖提交

    是否可以获取有关每次提交中的更改浪费了多少空间的信息 以便我可以找到添加了大文件或大量文件的提交 这一切都是为了尝试减少 git repo 的大小 变基并可能过滤提交 你可以这样做 git ls tree r t l full name H
  • Git 日志历史记录

    对于版本控制来说 重要的一件事是知道谁做了什么更改 如果某些内容发生了变化 而我不知道为什么要进行更改 我会查看历史并询问进行更改的人 当我探索 git 时 让我对这个功能有点紧张的一件事是它似乎很容易伪造 是什么阻止我将同事姓名 电子邮件
  • 无法使用 Git Bash 对 Visual Studio Team Services 进行身份验证

    由于身份验证失败 我无法对 Visual Studio Team Services VSTS 上的远程存储库运行任何命令 我可以通过 Visual Studio 进行拉取等操作 但只能通过 Visual Studio 不通过 Git Bas
  • 在单独的终端屏幕上显示 git diff 和 git log 输出

    设置新的开发环境后 我遇到了一个奇怪的 git 行为 我不记得过去见过 我习惯于git diff and git log在终端中创建一个新屏幕并在其中显示其输出 什么less默认情况下 我用它作为我的寻呼机 然后我可以退出并返回到之前的终端
  • git apply 不对文件进行任何更改

    我必须对我的存储库应用补丁并正在运行 git apply directory PWD xxxxx patch 由于我不会详细讨论的原因 我无法使用git am在这种情况下 我需要使用目录标志 吉特告诉我 gt git apply direc
  • GIT:无效路径“.editorconfig”

    从 master 克隆项目时出现以下错误 错误 无效路径 editorconfig 致命 无法签出工作树 警告 克隆成功 但结账失败 您可以使用 git status 检查签出的内容 并使用 git Restore source HEAD
  • 将存储库移至另一台计算机

    我已将存储库从计算机 A 移至计算机 B 我已验证等待推送的提交仍在 B 上 但整个存储库 每个文件 均未暂存 我不想添加它们并将它们作为提交推送 因为从复制存储库到粘贴它 我没有更改每个文件 当我移动存储库时 它只有等待推送的提交 而不是
  • git log 不按时间顺序排列

    我在一个公共项目 B2G 又名 FirefosOS 上意外发现 git log 输出不是按时间顺序排列的 git clone https git mozilla org releases gecko git git log graph fo
  • Git 会删除空文件夹吗? [复制]

    这个问题在这里已经有答案了 我已提交一个项目并将其推送到我的 GitHub 帐户 该项目包含以下部分文件结构 server conf some files java lib java 和 lib 文件夹为空 从 GitHub 下载我的项目时
  • Azure Devops Pipeline YAML 中的 Git 标记名称

    Summary 如何获取 Azure Devops Pipeline YAML 文件中当前 git 标签的名称 我想做什么 我正在 Azure Devops 中设置构建管道 创建新的 git 标签时会触发管道 然后我想构建 docker 镜
  • 仅将单个文件放入 git 子模块/存储库中

    我在 git 源代码存储库中有一个特定文件 其中包含生产设置 密码 我想限制此文件 以便只有制作团队的成员才能看到它 但是 我想控制它的变化 我考虑过在 git 中使用子模块 然后限制对新存储库的访问 然而 git 似乎需要子模块的整个子目
  • 如何设置“阅读文档”以使 Sphinx autodoc 选项发挥作用?

    我的项目不是使用 autodoc 构建的 我遇到了关于我的项目未在 autodoc 中构建的常见问题 https read the docs readthedocs org en latest faq html my project isn
  • 无法从另一台计算机访问 git 分支

    基本上我看不到另一台计算机上的分支 我跑 git branch a 在家用电脑上我得到 C learn ror sample app filling in layout gt git branch a filling in layout m
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • 在 git 中管理 schema.rb 的首选方法是什么?

    我不想添加schema rb to gitignore 因为我希望能够从该文件加载新的数据库架构 然而 保持检查状态会导致各种虚假冲突 而这些冲突很容易通过新的解决方案解决 db migrate reset 基本上我想要一种方法 将 sch
  • 使用 Git 在线使用 TFS 的 Visual Studio 2013:自动保存文件签入

    我目前正在将 Visual Studio Premium 2013 Update 3 与 Team Foundation Server Online 结合使用并使用 Git 存储库 直到最近 我已经成功使用 Git Repo 几个月了 现在

随机推荐

  • python语法错误无效语法[重复]

    这个问题在这里已经有答案了 我是 Python 编程语言的新手 我买了一本书并且一直在读 这本书的名字是 3x Python 初学者编程第三版 我正在努力将迄今为止所学到的知识付诸实践 我有一个我不明白的问题 我知道它很简单 但我不确定如何
  • 如何在 SQLAlchemy for MSSQL 中设置架构?

    我目前这样做 usr bin env python 3rd party modules from sqlalchemy import create engine requires pymssql local modules from con
  • 如何尽可能快地将大量记录插入MySql数据库

    我有一个如下所示的数据库表 create table temperature id int unsigned not null auto increment primary key temperature double 在我的程序中 我将大
  • 从 Xamarin.Forms 应用程序打印

    我是 Xamarin 新手 目前正在使用 Xamarin Forms 开发示例或 概念证明 应用程序 我应该从这个应用程序执行打印任务 尽管我现在还不确定要打印什么 屏幕 标签内容 文件等 无论哪种方式 从 Xamarin Forms 应用
  • 使用来自互联网的图像更新 Android 小部件(使用异步任务)

    我有一个简单的 Android 小部件 我想用互联网上的图像进行更新 我可以在小部件上显示静态图像 没有问题 有人告诉我 您需要为此使用异步任务 而我对此没有太多经验 这是我的小部件 Override public void onUpdat
  • Docker Rancher - 从 WSL 使用 docker 时权限被拒绝

    我已经在 Windows 10 上使用 dockerd 选项安装了 Docker Rancher 并为我当前的 WSL 发行版 Ubuntu 安装了 WSL 当我尝试在 WSL2 中使用 docker 时 出现以下错误 fpapi xxx
  • Java 中 int 转换为数组 char

    我试图在不使用字符串操作的情况下将整数转换为字符数组 我的尝试是 int number 12 char test Character toChars number for char c test System out println c 没
  • 在多对多关系上添加元素

    我正在做一个项目 从学校的角度 你可以计算每个学生的平均值 您可以在一个屏幕上注册学生 第一个实体 在另一个屏幕上注册科目 第二个实体 学生有姓名 电子邮件 成绩和平均分作为属性 科目有姓名 它们彼此之间是多对多关联的 我正在尝试为每个学生
  • UITableView 和单元格重用

    我有一个UITableView我已经子类化了UITableViewCell 叫它CustomCell 所以它有几个标签和一个UIImageView 只有某些单元格才会真正显示图像 这是我的代码tableView cellForRowAtIn
  • 如何获取AVPlayer的视频帧?

    我有 PlayerView 类用于显示 AVPlayer 的播放 代码来自文档 https developer apple com library archive documentation AudioVideo Conceptual AV
  • 来自 StringIO 源的 Python xml etree DTD?

    我正在调整以下代码 通过中的建议创建这个问题 https stackoverflow com questions 2835077 lxml unicode entity parse problems 它采用 XML 文件及其 DTD 并将它
  • 在 Vista 上安装后无法使用 gem 和 ruby​​ 命令

    我昨天按照此站点上的说明在 Vista 32 位上安装了 Ruby 和 Ruby on Rails http rubyonrails org down http rubyonrails org down 所以我下载了安装程序 然后是 Gem
  • 当数据量较小时,node.js response.write(data) 需要很长时间

    我注意到 Node js 中以下代码的性能出现了奇怪的行为 当尺寸为content为1 4KB 请求的响应时间大约为16ms 然而 当尺寸为content只有988字节 请求的响应时间奇怪地长得多 大致200ms response writ
  • AngularJS - ngSwitch 和 ng Click 在 ng Repeat 中不起作用

    我想显示列表的元素 这要归功于ngSwitch但我不知道该怎么做ngRepeat 我一开始没有列出清单 只是为了了解如何ngSwitch工作并向您展示我想要做什么 这里有一个 jsFiddle 可以帮助您理解 jdFiffle 1 http
  • 在 RStudio 中记录 R 包中的 R6 类和方法

    我正在努力处理 R6 类及其方法的文档 我的目标是在 RStudio 中获得方法的自动完成功能 目前 我只得到方法的名称 但没有得到我通常使用的帮助信息roxygen2用参数等记录函数 目前 这是我的班级 importFrom R6 R6C
  • NativeScript 与 Flutter [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我已经开始工作Nativescript 与 Angular https www nativescript org 最好的部分是代码共享技术 我可
  • UOW + Repository + Autofac加载两个不同的DbContext

    我今天遇到了一个问题 我无法解决它 我搜索了很多 但无法找到解决方案 如果可以的话请帮助我 我正在实现一个 MVC 应用程序 它使用 EF 存储库模式 工作单元和 Autofac 作为依赖注入器 我能够使用一个 DbContext 类 但我
  • 在访问外部Web服务之前获取代理配置(.NET 2.0)

    当尝试调用外部 Web 服务 通过互联网 上的方法时 它抛出了我 远程服务器返回错误 407 需要代理身份验证 为了解决这个问题 我使用以下代码来设置我们在办公室使用的代理 Set the system proxy with valid s
  • 更新+使用(行锁)+ CTE

    我找不到任何有关 T SQL 语句语法的文档 我需要做一个WITH ROWLOCK CTE 结果更新 像这样的东西 所以更新后将是top1000 table1 col2 声明WITH ROWLOCK 在更新 table1 的行期间至关重要
  • 如何将对子模块所做的更改的提交推送到主 git 存储库中?

    我决定将我的应用程序存储库从 SVN 切换到 git 我的回购结构是这样的 AndroidStudioProjects MyMine tree L 1 ActionBarSherlock Android Universal Image Lo