如何使用子模块克隆本地存储库?

2024-02-05

假设我递归地克隆一个存储库。

$ git clone --recursive ssh://server/project/client
Cloning into 'client'...
remote: Counting objects: 191, done
remote: Finding sources: 100% (191/191)
remote: Total 191 (delta 53), reused 159 (delta 53)
Receiving objects: 100% (191/191), 27.59 KiB | 0 bytes/s, done.
Resolving deltas: 100% (53/53), done.
Checking connectivity... done.
Submodule 'gui' (ssh://server/project/client/gui.git) registered for path 'gui'
Cloning into 'gui'...
remote: Counting objects: 3213, done
remote: Finding sources: 100% (3213/3213)
remote: Total 3213 (delta 1272), reused 3107 (delta 1272)
Receiving objects: 100% (3213/3213), 47.88 MiB | 12.05 MiB/s, done.
Resolving deltas: 100% (1272/1272), done.
Checking connectivity... done.
Submodule path 'gui': checked out '7315db8d7a8b36929f7874dc5477359839ec51ce'

现在我想创建该本地存储库的本地克隆(可能在本地进行并提交更改之后)。

$ git clone --recursive client/ client_copy
Cloning into 'client_copy'...
done.
Submodule 'gui' (/home/deployer/client/gui.git) registered for path 'gui'
fatal: repository '/home/deployer/client/gui.git' does not exist
Clone of '/home/deployer/client/gui.git' into submodule path 'gui' failed

My .gitmodules文件看起来像这样:

[submodule "gui"]
        path = gui
        url = ../client/gui.git

为什么会失败,我该如何解决这个问题?


问题在于你的.gitmodules文件。子模块url在您的项目中被定义为来自超级项目存储库的相对路径,但是当克隆子模块时,它们将使用path地点。

换句话说,git 试图从url位置,但在您的本地计算机上,它们实际上位于path地点。

要解决此问题,只需克隆本地超级项目存储库(git clone /path/to/superproject),然后进入新克隆的.gitsubmodules并改变urls to be ./<whatever-the-path-is>。例如,您的 gui 子模块将变为:

[submodule "gui"]
        path = gui
        url = ./gui

更改每个子模块.gitmodules像这样,然后运行:

git submodule sync
git submodule update --init --recursive

那应该可以了!

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

如何使用子模块克隆本地存储库? 的相关文章

  • 在git的远程存储库上创建私有分支

    我想在我们公司的 git 上构建特定的流程 开发人员在他的本地计算机上创建一个分支并在那里提交一些文件 dev 将此分支推送到远程仓库 其他开发者无法访问该分支 经过几轮推动开发人员决定发布他的更改 将他的私人分支合并到公共分支 推动该公共
  • 如何在 EGit 中创建正确的新本地和远程分支组合?

    我想在 Egit 中执行以下操作 git checkout b newbranch git push u origin newbranch 这给了我一个新的本地分支 将其推送到上游服务器并创建正确的跟踪参考 我如何在 Egit 中做同样的事
  • 使用 git 合并两个截然不同的分支?

    我有我的master分支和我的verydifferentbranch它们有相同的祖先 大约 300 次提交前 现在verydifferentbranch功能完整我想把它放在master下面branch 进行变基会导致每个补丁都有很多合并冲突
  • Git:文件“已更改但未更新”

    已更改但未更新 是什么意思 这些文件位于 git 中 它们已被修改 但是当我运行 git status 时 这些更改显示在 已更改但未更新 而不是 要提交的更改 下 On branch master Changes to be commit
  • 如何将yarn add/npm install与monorepos一起使用

    我需要从 GitHub 中的私有 monorepo 下载节点包 类似于 monorepoProject subProjectA subProjectB 还有两个子项目A and 子项目B是 typescript 项目 如下图所示 subPr
  • 如何从现有存储库中的分支创建新的 GitHub 存储库?

    I have master and 新项目分支机构 现在我想创建一个全新的存储库及其基于新项目分支的主存储库 背景 我有一个存储库 其中包含三个独立的应用程序 事情并不是这样开始的 仓库中最初只有一个应用程序 然而 随着时间的推移 业务需求
  • 为什么 git 默认执行快进合并?

    来自 Mercurial 我使用分支来组织功能 当然 我也希望在我的历史中看到这个工作流程 我使用 git 开始了我的新项目并完成了我的第一个功能 当合并该功能时 我意识到 git 使用快进 即如果可能的话 它会将我的更改直接应用到主分支
  • 本地提交推送到中央服务器

    在工作中 我们使用 perforce 并被鼓励定期对其进行承诺 我对此很满意 然而 我想运行像 Mercurial 这样的东西 这样我就可以在本地提交正在进行的工作并且不一定编译 运行的东西 然后从中定期提交到中央 perforce 服务器
  • 如果不是最新的,则阻止 git Push 发送整个存储库

    相关问题 为什么 Git 每次推送 origin master 时都会发送整个存储库 https stackoverflow com questions 1381403 why does git send whole repository
  • 如何仅对最新合并后的提交进行变基?

    考虑以下场景 我从master那里检查了一个分支 我做了一些承诺 我合并了更新的master 我做了更多的承诺 现在我想要从第 4 点开始变基提交 以便从第 2 点开始的提交不受影响 所以如果我最初有 1 2 x x x x x x x m
  • 将各种提交合并为一而不合并

    是否可以加入各种提交 这是我的情况 我的应用程序在 OSX 10 6 和 10 7 中运行 我已经修复了 10 6 的一些内容 然后提交了 更改为 10 7 并再次修复修复程序 以便它们兼容 然后再次提交 然后返回到 10 6 并再次检查并
  • GIT:向非当前分支添加本地更改

    我通常会遇到这样的情况 我做了一些本地更改 却发现我在错误的分支上进行了更改 因此我需要在提交之前切换分支 问题是当有本地更改时我无法切换分支 有办法做到这一点吗 显然 我可以复制更新的文件 切换分支 然后将它们复制回来 但这看起来并不聪明
  • 包括来自raw.github.com的js

    我有一个 github com 演示页面 链接到https raw github com master file js https raw github com master file js这样我就不需要总是复制 js文件转移到gh pag
  • Git 存储库错误并显示消息,它不是存储库...但它是

    我有一个 git repo 去年我一直在同一个盒子上使用 今天我跑步git status并得到错误消息 fatal Not a git repository or any parent up to mount parent home Sto
  • 中止 `git stash apply` [重复]

    这个问题在这里已经有答案了 我很遗憾应用了存储 错误的分支 我如何撤消此操作并将我的存储返回到我的存储列表 以便稍后将其应用到正确的分支 如果你还没有承诺 你应该能够git stash再次 可能与git reset HEAD first A
  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • Gitolite 与 LDAP 不工作

    我是 gitolite 的新手 我正在尝试用 gitolite 进行一个非常简单的测试 我已经设置了名为 test repo 的存储库 请注意 除了下面所述之外 我没有修改任何其他内容 我可以在 gitweb 中看到这个仓库 这是仓库配置
  • 使用 Git 处理 subversion:忽略对跟踪文件的修改

    我目前正在使用 subversion 存储库 但我正在使用 git 在我的计算机上本地工作 它使工作变得更加容易 但也使 subversion 存储库中发生的一些不良行为变得非常明显 这给我带来了问题 拉取代码后 有一个有点复杂的本地构建过
  • 我可以将我的heroku git repo导入bitbucket吗?如何?

    我的笔记本电脑坏了 我需要从另一台计算机上编码 我正在使用 Heroku 我想将最新版本的代码从 Heroku 获取到另一台机器 据我了解 强烈建议使用 GitHub 或 BitBucket 获取适当的远程存储库 我决定尝试一下 BitBu

随机推荐

  • Android 上的 flash.sensors.Accelerometer 在网络浏览器中

    加速度计UPDATE事件永远不会触发 但是isSupported当 Flash 应用程序在 Android Web 浏览器中运行时 返回 true 我怎样才能让它发挥作用 this accelerometer new Acceleromet
  • php/mysql 将行添加在一起以获得总计

    这是场景 我正在生成一份关于在特定时间段内需要缴纳会费的所有会员的报告 我成功选择每个数据库条目并将其显示为 html 表中的一行 问题是报告必须具有的总字段数 每个成员根据他们使用的服务支付不同的金额 因此我必须单独添加每个字段中的值以确
  • 服务器启动时的调用方法[重复]

    这个问题在这里已经有答案了 我试图在我的网络应用程序启动时调用一个方法 目的是启动一个计时器 以定义的时间间隔执行一些工作 当我的 jboss 7 1 Web 应用程序启动时 如何调用函数 helloworld 如果您想在 Web 应用程序
  • 如何使用 sqlalchemy-migrate 将列类型从字符变化更改为整数

    我正在使用 sqlalchemy migrate 来更改 Postgre SQL 数据库中表中的一列的类型 我使用的升级脚本是 cofing utf 8 from sqlalchemy import MetaData Table Colum
  • 如何将元标记设置为 部分中的第一个标记?

    我正在使用 JSF2 GlassFish 3 1 PrimeFaces 2 x 我在 IE9 上遇到奇怪的渲染问题 我应该能够通过插入以下内容来强制 IE9 呈现为 IE9 但问题是 它不起作用 因为 我被告知 元标记必须是该部分中的第一个
  • C# 中的堆栈溢出

    我有这个寄存器来注册我需要的所有对象 public static class ObjectRegister public static List
  • 在 WCF 服务库项目中使用自定义 ServiceHostFactory

    我正在编写一个 WCF 服务 该服务在内部严重依赖于控制反转 我想在自定义 ServiceHostFactory 内引导 初始化我的 IoC 容器 我读过一些可用的不同钩子的示例 但它们似乎都不适合我 This approach http
  • AntiForgeryToken 登录后无效

    我有一个用户可以在不登录的情况下发布的表格 但是 如果他的电子邮件被识别 则需要密码 密码表单通过 Ajax 进行验证 如果成功 则提交主表单 两种形式都需要有效的 AntiForgeryToken 问题是 密码检查作为副产品还会使用户登录
  • Android:如何以编程方式突出显示 EditText?

    requestFocus 将光标移动到编辑框 但不突出显示它 我想突出它 就像它被触摸一样 我怎样才能做到这一点 尝试这个 field setSelection int startIndex int endIndex 第一个参数 start
  • Xamarin 是否有 #if 或 #ifdef 来确定平台?

    例如 ifdef iOS ifdef android 等 如果有 if就更好了 iOS if MOBILE Console WriteLine MOBILE is defined endif if IOS Console WriteLine
  • 在包装物品的行上添加水平线分隔符

    我使用 css flexbox 在行中放置未知数量的项目 如果需要 可以环绕到其他行 我的问题是 每行之间是否可以有一条水平线 Here http codepen io anon pen jbQpvP这是我所拥有的一个简单的例子 如果打开
  • 如何使用last_insert_rowid插入多行?

    假设我有一个包含两个表的数据库Persons and PhoneNumbers 其中PhoneNumbers表有一个外键Persons 如果我想在一次事务中插入一个拥有电话号码的人 我可以编写如下查询 BEGIN TRANSACTION I
  • 如何在java代码中使用.dll文件?

    我有一个 dll 文件 我必须在 java 中使用它 此 dll 文件有一个参数化方法 该方法应返回字符串类型 当我向它传递参数时 我收到的消息为Native methods do not specify a body 这是代码 packa
  • 使用建议时,Visual Studio 2017 强制在方法名称处添加“async”(Ctrl + .)

    我在使用 Visual Studio 2017 时遇到问题 当我想使用 await 调用方法并按 Ctrl 时 要向方法添加 async VS2017将强制在方法名称处添加 async 这有时很有用 但在某些覆盖方法 如 OnNaviged
  • 如何使用 dplyr 中的排列来对组进行排序?

    我想对数据进行分组 然后排列表格 以便首先显示具有最高值的组 例如 在 mtcars 数据集中 我想按气缸数对汽车进行分组 然后排列表格 以便具有最高平均值的组mpg首先显示 mtcars gt group by cyl gt arrang
  • wpf中可点击图像映射的最佳方法

    我有一个包含 c WPF 中许多部分的图像 我想让每个部分都点击思考 我尝试将图像拆分为多个部分并在每个部分上创建事件 图像 但问题是图像的嵌套部分 制作图像地图的最佳方法是什么 您可以使用 Microsoft Expression Stu
  • 如何使用 JSHint 和 RequireJS 禁用警告“define”未定义

    我在我的项目中使用 RequireJS AMD 当我在项目上运行 jshint 时 它会抛出类似错误 在 AMD 脚本中 define is not defined 在 Mocha 测试用例中 describe is not defined
  • Cython“无法为 cdef 类、结构或联合中的字段分配默认值”

    我正在第一次尝试将 Python 代码移植到 Cython 我对 C 的经验非常有限 我正在尝试创建一个相对简单的类来存储多维数组 为了解决这个问题 我们将属性时间保留为长度为 1 的单个一维数组 目前 我收到错误 cdef np ndar
  • 如何为以前的 Java 版本构建 jar?

    我正在尝试编译我的代码并在不同的服务器上运行它 问题是我的 JRE 版本是 Java 版本 1 6 0 13 而服务器上的 JRE 版本是 Java 版本 1 4 2 当我尝试在服务器上运行 jar 时 这给了我 无法识别的类文件版本 异常
  • 如何使用子模块克隆本地存储库?

    假设我递归地克隆一个存储库 git clone recursive ssh server project client Cloning into client remote Counting objects 191 done remote