如何使用现有存储库添加/更新子模块以节省带宽?

2024-04-08

假设我有一些大型存储库 BigRepo,并且我想将其添加为另一个项目的子模块。通常我会这样做

$ git submodule add [email protected] /cdn-cgi/l/email-protection/me/BigRepo.git

但我不想再次下载整个内容。幸运的是我已经结账了,所以我尝试一下

$ git clone ../BigRepo
Cloning into 'BigRepo'...
done.
$ git submodule add [email protected] /cdn-cgi/l/email-protection/me/BigRepo.git
Adding existing repo at 'BigRepo' to the index

伟大的!除了

  1. The origin子模块中的远程指向../BigRepo;我希望它指出[email protected] /cdn-cgi/l/email-protection/...
  2. The .git文件夹位于BigRepo/.git代替.git/modules/BigRepo

那么这样做的正确方法是什么?


需要进行一些修复,因为您想要丢弃该代理存储库的所有证据(../BigRepo),但这并不难。

从这里最简单的方法可能就是用您拥有的内容重做子模块添加,方法是

# undo the in-repo add
mv BigRepo ../agggh_I_meant_to_add_this_from_outside
git rm --cached BigRepo
git config -f .gitmodules --remove-section submodule.BigRepo
git config                --remove-section submodule.BigRepo

您的撤销已完成。

现在,如果您从本地未发布的存储库添加子模块,则必须稍后更正网址以方便其他人,但这很简单:

# Get `git submodule add` to do the hoisting for you
git submodule add ../agggh_* BigRepo

# but from now on use u://r/l as the submodule's published repo:
git config -f .gitmodules --set submodule.BigRepo.url u://r/l
git config                --set submodule.BigRepo.url u://r/l  # alternate spelling of `git submodule sync BigRepo` here

# and the published repo is my copy's `origin` too
git --git-dir=BigRepo/.git remote set-url origin u://r/l

(

编辑解决评论中的问题:

The mv/clone-from-the-mv'd-one 对是因为也许你已经完成了,或者完成了但忘记了,那里的一些工作,等等../BigRepo可能已经过时了。这只是一种安全策略; Arm -rf BigRepo然后git submodule add ../BigRepo如果当前添加的确实是可丢弃的,那么也可以工作。

我无法弄清楚上面添加的任何子模块如何引发网络活动 -../anything与以下文件系统位于同一文件系统上../ThisRepo i.e. ., 正确的?git clone普通的相同文件系统路径(相对或绝对)的硬链接会非常便宜,除非您采取措施激发实际副本——这甚至在 NTFS 上也有效。仅当您指定完整的 url 或以其他方式强制解决 git 创建完整副本克隆的问题。也许只是咖啡因的作用异常缓慢,如果我漏掉了一些东西,无论谁看到它,都可以将其编辑进去或将整个段落编辑掉。

)

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

如何使用现有存储库添加/更新子模块以节省带宽? 的相关文章

  • git 可以与 Xcode 集成吗?

    有没有办法将 git 存储库与 Xcode 内置的 SCM 功能一起使用 Xcode 4 原生支持 git WWDC 2010 上的开发者工具国情咨文演讲 在这里了解更多 Xcode 4 中的新增功能 http developer appl
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • Jenkins git 插件 - 有时太慢

    以下内容摘自 Jenkins 日志 00 00 03 135 gt git fetch tags progress email protected cdn cgi l email protection some org some repo
  • refname 不明确且拉取失败

    我运行了以下命令 因为我想将生产分支移回而不必先签出 git branch f production HEAD 1 现在 当我检查生产时 我收到以下警告 warning refname production is ambiguous 然后我
  • git diff 在尖括号中显示 unicode 符号

    我有一个带有 unicode 符号 俄语文本 的文件 当我修复一些拼写错误时 我使用git diff color words 看看我所做的改变 如果是 unicode 西里尔文 符号 尖括号会造成一些混乱 如下所示 cat p1 cat p
  • 推送时发生 Git 错误 - update_ref 失败

    当我尝试推送本地提交时遇到问题 这可能是在 Android Studio 崩溃时发生的 这是错误 update ref 引用 refs remotes origin master 失败 无法锁定 ref refs remotes origi
  • 如何解决 VSTS 中拉取请求中的合并冲突?

    我已经创建了拉取请求 我进入了这个 批准 按钮不执行任何操作 并且 完成 被禁用 如何解决拉取请求中的冲突 Update 微软刚刚添加了基于浏览器的合并 这可能会让你摆脱小冲突的困境 并提供自 Sprint 150 起改进了不同场景的可视化
  • git - 更新 fork 的 master 并将我的分支重新建立到它之上?

    我分叉了一个 github 项目 然后将其克隆到本地 然后我在新分支中做了一些更改my github the project repo 然后我添加并提交了更改 并推送到我的 github 存储库并提交了拉取请求 所有者已收到我的请求 并希望
  • 如何从 android.googlesource.com 或 github.com 下载单个目录?

    我想下载 https android googlesource com platform frameworks base git master tools aapt https android googlesource com platfo
  • 远程测试时如何搭建git开发环境

    这似乎是一个愚蠢的问题 但我觉得我对 GIT 相当了解 但我似乎无法按照我的意愿设置我的开发环境 我要么错过了一些非常简单的东西 要么我做错了 我在我的服务器上初始化了一个裸 git 存储库 将其克隆到我的本地计算机 提交我的文件并推送到原
  • git Push over sshfs 失败,并显示“关闭 sha1 文件时出错:错误的文件描述符”

    我们使用 sshfs 通过 SSH 安装文件系统 并将其用作 git 存储库协作的远程存储 Mac OSX 10 6 6 到 RHEL 3 服务器 SSHFS 版本 2 2 MacFUSE SSHFS 2 2 0 MacFUSE 库版本 F
  • git reset 命令中的 ~1 是什么意思?

    git 重置 HEAD 1 我的印象是 1 的意思是 从 HEAD 开始 遵循 1 链接 并将 HEAD 标签设置为新的提交节点 我正期待着 git 重置 HEAD 2 跟随 2 个链接 然后设置 HEAD 标签 但是 如果我尝试它 我会收
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • VS 2015 + Bower:在防火墙后面不起作用

    Problem 在 Visual Studio 2015 中 使用 Bower 我的包在防火墙后面时恢复失败 并出现类似以下内容的错误 ECMDERR 无法执行 git ls remote tags heads git github com
  • 在 Azure DevOps 项目之间移动存储库时保留拉取请求

    我在同一帐户内有两个 Azure DevOps 项目 我想将存储库从一个项目移动到另一个项目 这一页探索如何在具有完全保真历史记录的团队项目之间移动 git 存储库 https learn microsoft com en us azure
  • Netbeans 和 Git,.obj 文件被忽略

    我正在开发一个涉及 obj 文件的小型 git 项目 当我查看 项目选项卡 时 我发现它们被忽略了 但如果我查看我的 gitignore 我无法理解为什么 DepthPeeling nbproject private DepthPeelin
  • 如何将工作树与提交进行比较?

    我在用着 git diff mycommit 用于比较我的工作树mycommit 但它似乎忽略当前索引中不存在的文件 您可以按如下方式重现它 git init echo A gt A txt git add git commit m A g
  • 将bitbucket发布到数字海洋

    我本质上是试图使用 bitbucket 来理解 git 的概念 我一直在通过修改本地帐户和 bitbucket 帐户之间的文件来练习版本控制 事实证明这很有帮助 现在我正在尝试弄清楚如何将文件从 bitbucket 或者我猜是 GitHub
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1

随机推荐

  • Python-从另一个列表中删除一组列表

    array1 1 2 3 4 5 6 7 8 9 array2 1 2 2 2 5 6 6 6 9 temp set array2 array1 remove temp Traceback most recent call last Fil
  • JqG​​rid 搜索字段的多个文本框

    我想知道 JqGrid 高级搜索是否可以为我想要搜索的某些字段显示多个文本框 例如 如果我有一个 电话号码 字段 我希望能够可视化 2 个框 一个用于区号 另一个用于电话号码的其余部分 然后按 查找 后 我希望能够获取两个值并将它们合并或执
  • 将事件分配给事件处理程序的两种不同类型之间的区别

    我在 SO 中看到了这个示例代码 它说一种做法不好 另一种做法很好 但我不明白为什么 事实上 我收到了著名的 RCW COM 对象错误 该帖子说这可能是一个原因 public class SomeClass private Interop
  • 如何在单击项目时检查ListView的复选框?

    如何在单击项目时检查ListView的复选框 我有一个带有复选框 文本视图 按钮的列表视图 这里我想选择ListView的多行 所以使用了CheckBox 如果我点击一行 我想让它对应的CheckBox被选中并获取ListView中被点击项
  • 每个Android的location.Address方法返回什么?

    我试图弄清楚如何使用 Android SDK 和 android location Address 类获取地址组件 有些方法非常简单 其他方法很容易通过示例中的示例来理解文档 http developer android com refer
  • .Net Core - CS0012“对象”在未引用的程序集中定义

    我是 Net Core 的新手 我正在尝试基于它构建一个构建系统 作为该项目的一部分 我创建了一个抽象类 它详细说明了构建任务应实现的内容 并将其填充到共享库中 可执行项目引用该库并扫描项目目录以查找特殊命名的目录 然后检查是否有任何 cs
  • Play Framework Form“折叠”方法命名原理

    Play 框架 2 x 表格类 http www playframework com documentation 2 0 api scala index html play api data Form有一个方法叫做foldwho 的用法表示
  • 所需的后台模式 iOS6 Xcode 4.5

    我注意到在 Xcode 4 5 和 iOS6 中 必需的背景模式 应用程序播放音频 不起作用 有其他人注意到这一点吗 如果是的话 您找到解决办法了吗 Thanks 我相信它可能取决于您为 AVAudioSession 指定的类别类型 确保将
  • 测试递归方法

    我想测试一个方法 public function get key if time this gt driver gt get key if key self LAST UPDATE KEY time new DateTime this gt
  • 保持侧边导航与页面滚动固定

    我有一个客户网站 www stagecraft co uk 他们想要在租用页面 http www stagecraft co uk hire html 较长的页面 http www stagecraft co uk lighting gen
  • Tensorflow 未显示“在本地成功打开某某 CUDA 库”

    我将 TensorFlow 配置为在 GPU GeForce 840M 上支持 CUDA 但程序运行速度相当慢slow与我之前使用的 CPU 相比 还有 我do not收到任何类型的消息某某CUDA库打开成功当我运行程序时 相反 这是我运行
  • 在精确的关键帧处停止故事板

    我为我正在制作的一些游戏制作了一个骰子 在 C 中 它是一个用户控件 它使用故事板来依次显示多个图像 如幻灯片 因此它看起来像一个滚动的 3D 骰子 问题在于在特定关键帧处启动和停止它 为此使用 Pause 和 Resume 似乎是合乎逻辑
  • Python gekko 方程定义中的换行符

    我目前正在手动实现有限元的伽辽金法 并使用 python gekko 来求解所得的非线性代数方程组 这对于小型系统来说不会产生任何问题并且工作正常 一旦系统变得更加复杂 涉及长方程和指数项m exp 对于求解器来说 方程可能不再具有正确的格
  • 如何在 GITLab WebHook 中将提交 SHA 作为参数传递

    如果有代码提交到 Gitlab 我想触发 Jenkins 作业 I am using WebHooks for this 我正在尝试的网址是 http 10 192 39 32 1024 job SCMSnaps buildWithPara
  • String 类造成混乱

    最近我在java中遇到了一个错误 Exception in thread main java lang NoSuchMethodError main 即使我的课程只有 3 行代码 public class Test public stati
  • 将多列合并为 1 列 [python,pandas]

    我有一个包含 2 列的 pandas 数据框 A 1 2 3 B 4 5 6 我想创建一个新专栏 其中 C 1 4 2 5 3 6 Setup df pd DataFrame A 1 2 3 B 4 5 6 Solution 请记住 根据您
  • 使用变量查询

    是否可以在查询中设置 读取变量 伪代码 SELECT animal name tallest animal select top 1 height from animal order by height desc as tallest sm
  • ASP.NET Core 1.1 在本地运行良好,但在发布到 Azure 时显示“启动应用程序时发生错误”。

    我一直在开发一个 ASP NET Core Web 应用程序 主要基于 Visual Studio 2017 RC2 中提供的 MVC 模板 它在本地调试模式下运行得很好 但是当我尝试将其发布到 Azure 托管的 Web 应用程序时 出现
  • 如何获取超过 25 条帖子

    我正在尝试使用restfb获取所有帖子消息 我的代码如下 public Connection
  • 如何使用现有存储库添加/更新子模块以节省带宽?

    假设我有一些大型存储库 BigRepo 并且我想将其添加为另一个项目的子模块 通常我会这样做 git submodule add email protected cdn cgi l email protection me BigRepo g