移动包含子模块的 git 工作副本

2024-04-04

Git 最近的一项变化改变了.git使用子模块时处理目录。 而不是拥有一个.git每个子模块,现在所有内容都位于“根级别”.git目录(与包括子模块的工作副本相对应的目录)。

然后,在每个子模块中,创建一个文件,该文件指向该子模块的新位置.git目录。

In 我的项目 https://github.com/roboptim/roboptim-core,我有以下.gitmodules file:

[submodule "tests/shared-tests"]
        path = tests/shared-tests
        url = git://github.com/roboptim/roboptim-shared-tests.git
[submodule "cmake"]
        path = cmake
        url = git://github.com/jrl-umi3218/jrl-cmakemodules.git

当我做git clone --recursive,然后我得到:

$ cat cmake/.git
gitdir: /home/moulard/profiles/default-x86_64-linux-ubuntu-12.04.1/src/unstable/roboptim/roboptim-core/.git/modules/cmake

我目前使用的是 Git 1.8.1.5。

我的问题是:

  1. 为什么这种行为发生了变化?我没有看到这个新策略有任何明显的好处。
  2. 我怎样才能安全地移动工作副本? (如果我移动工作副本,我会收到一条错误消息,告诉我损坏的 gitdir 的路径不再是 Git 存储库)

请注意,这与上一个问题不同移动包含子模块的 git 存储库的父目录 https://stackoverflow.com/questions/13252529/moving-the-parent-directory-of-a-git-repository-that-contains-submodules从某种意义上说,我是sure这不是与我的绝对路径的存在相关的问题.gitmodules file.


The .git/module组织的历史可以追溯到git1.7.8(2011 年 12 月 2 日) https://github.com/git/git/blob/master/Documentation/RelNotes/1.7.8.txt#L109-L114:

当使用“填充新的子模块目录时git submodule init", the $GIT_DIR子模块的元信息目录在里面创建$GIT_DIR/modules/<name>/超级项目的目录并通过 gitfile 机制引用。
这是为了可以在树中具有和不具有子模块的超级项目中的提交之间进行切换,而无需重新克隆.

然而,最近的错误修复已包含在1.8.2.1 https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.2.1.txt#L51-L52 and 1.8.3 https://github.com/git/git/blob/master/Documentation/RelNotes/1.8.3.txt#L408-L409(2013 年 4 月 22 日):

“git submodule update”,当递归到子子模块时,没有累积前缀路径。

因此升级到最新的 git 版本可以解决这个问题。


这里,提到了一种可能的解决方案(最新的 git 1.8.3,2013 年 4 月 22 日)托马斯·莫拉德 https://stackoverflow.com/users/1442517/thomas-moulard in 评论 https://stackoverflow.com/questions/16160993/moving-a-git-working-copy-containing-submodules/16161950?noredirect=1#comment23103265_16161950:

$ git submodule deinit -f .工作中!
然后我就可以跑了git submodule init并且路径得到修复

如果(取消)初始化步骤(.git/modules)

它不关心 'add' 这一步记录了子模块的 url.gitmodules文件:您仍然需要在该文件中手动删除它。

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

移动包含子模块的 git 工作副本 的相关文章

  • 如何下载 GitHub 版本的二进制文件?

    我有一个包含我需要的二进制文件的存储库 I can git checkout tags thetagoftherelease 这似乎检查了正确的标签 但没有拉下二进制文件 如何获取添加到版本中的二进制文件 版本上的绿色框 在版本中添加了二进
  • 当 git 说它正在“解决增量”时,它在做什么?

    在存储库的第一次克隆期间 git 首先接收对象 然后花费大约相同的时间 解析增量 在克隆的这个阶段实际上发生了什么 的阶段git clone are 接收存储库数据库中所有对象的 pack 文件 为收到的包创建索引文件 查看头部修订版 显然
  • Git - “非单调索引”

    我正在本地电脑上克隆 git 存储库 在此过程中 该命令会输出大量以下错误消息 error non monotonic index git objects pack pack idx 例如 该消息保留在拉动或分支交换机上 但一切似乎都有效
  • 取消忽略 git 中被忽略目录中的文件

    In my gititnore我有一个条目 build 效果很好 整个目录都会被 git 忽略 现在 我只想打破这个规则并保留这个文件 build outputs mapping release mapping txt in git 我怎样
  • Git分支切换不会改变代码文件夹文件

    这是后续this https stackoverflow com questions 9406651 code base for git master feature branch问题 我使用克隆了远程主项目文件夹git clone ema
  • git pull:无法快进,

    你能帮我解决我的问题吗 当我尝试从 dev 分支拉取时发生错误 我浏览了解决方案 它说我需要 rebase 但它对我来说没有成功 CT aohc MP1GYWQA MINGW64 c TCO source RAPMD Web Fronten
  • Git 将新的本地分支推送到远程,无需指定名称

    当针对特定的跟踪问题进行补丁修复时 我们的工作流程如下所示 1 git checkout patch git pull upstream patch make sure we re up to date 2 git checkout b i
  • 如何给 Git 控制台着色?

    我最近看到gitWindows 中的控制台是彩色的 例如绿色表示添加 红色表示删除等 我如何为我的颜色上色git这样的控制台 为了安装它 我使用了以下命令 sudo apt get install git core As noted htt
  • 当存储在变量中时,Git 提交消息变得混乱[重复]

    这个问题在这里已经有答案了 我有一个 Git 提交 其中有一个摘要 然后是一些描述 所以当我看到提交消息时git log format B n 1
  • Git 从不同的存储库中提取分支

    我当前的存储库中只有几个文件 我想合并来自不同存储库的远程分支 从中拉出并合并一个分支github com username code git 分支装载机 然后从中拉出并合并一个分支github com username code git
  • 分支和文件夹的 gitolite 权限

    在 gitolite 我想要 developers能够推送到除以下之外的任何分支master I want user1能够推送到任何分支 包括master 除了不是某个目录master 我该怎么做呢 这应该解决以下两个问题 repo are
  • git 中的 web.config 和 app.config 机器特定设置

    我们在不同的办公室有多个开发团队 他们需要为我们项目中的许多配置设置使用不同的值web config and app config files 我们希望使用一组合理的默认值来检查这些配置文件 这样通过检查 trunk master 分支 您
  • Git 更新文件时更改默认 umask

    我的 Git 有问题 我在 Google 和 StackOverflow 中搜索了解决方案 但没有任何帮助 问题是 每次 git 更新工作目录中的某些文件时 当我签出分支或合并分支等时 文件权限都会更改 以便添加 可写到组 标志 如果该文件
  • 致命错误:找不到“Fabric/Fabric.h”文件

    我正在使用 xcode 6 3 1 OSX 10 10 3 并且我已经在本地系统上成功配置了 crashlytics 它工作正常 并通过 Fabric 应用程序发布构建 但是当我将相同的代码库转移到 teamcity 时 它向我显示以下错误
  • 如何找出在哪个提交中添加了特定代码?

    我想知道我在哪个提交中添加了下面给出的代码 if getListView getChildCount 0 getActivity findViewById android R id empty setVisibility View VISI
  • 更快的“git rebase --preserve-merges”方法

    我通过创建一系列功能分支来使用 git 并在完成后将它们合并到 mastergit merge no ff 这会创建空的合并提交 可用于识别先前功能分支的起点和终点 为了处理多个并发分支 甚至嵌套分支 我使用 rebase 我从不合并回去
  • Git core.safecrlf 对具有相同行结尾的文件有不同的行为

    我有带有 VS 项目的 Windows 计算机 并且使用 Visual Studio 和 Cygwin 环境中的工具 包括 Git 有时 编辑后我会在文件中得到不同的行结尾 我想要简单的解决方案来检查文件的行尾一致性 然后再将其发送到存储库
  • 如何使用 GitLab 管道中的密钥通过 SSH 连接到目标服务器?

    当 GitLab 管道成功时 我想通过 SSH 使用公钥连接到服务器 正如我所看到的 我需要在 GitLab 端使用 ssh keygen 生成一个密钥并将其添加到我想要连接的服务器上 我可以在管道期间生成密钥 但由于公钥未添加到目标服务器
  • 从子文件夹自动部署 Heroku

    我知道你可以从github自动部署到heroku 但我还没有找到一种方法只将子文件夹从github推送到heroku 从命令行我知道可以通过以下方式执行此操作 git subtree push prefix
  • Mac 操作系统屏幕上的 Git 自动补全

    我在 mac 上使用 git 并配置了自动完成功能 如下所示http www codethatmatters com 2010 01 git autocomplete in mac os x http www codethatmatters

随机推荐

  • 登录后保持会话 - selenium - javascript

    我正在尝试使用 selenium web driver 和 Node js 自动化几个页面 我能够登录 但登录后我想使用由网络驱动程序启动的相同会话 以便我可以在会话受保护的页面上进行自动测试 这是我的尝试 async function l
  • 如何将报表设计器标尺单位从英寸更改为厘米?

    一个简单的 我希望 问题 我正在使用 Visual Studio 我在 SQL Server Business Intelligence Development Studio 中创建一个新报告 在布局视图中 标尺的单位是英寸 我想将其更改为
  • Python函数返回字典?

    我是一名 Python 初学者 我遇到了一个我不理解的函数的输出 我无法提供所有代码 因为其中一些是我公司的 IP 我基本上使用我们的一位开发人员编写的库从数据仓库中提取指标 然后我想在另一个应用程序中使用这个指标值 当我获得该值时 我会将
  • 如何在 Gradle 中遮蔽传递依赖?

    有没有办法在 Gradle 中隐藏特定的 传递 依赖项 我的情况 我有一个项目直接依赖com amazonaws aws java sdk emr 1 10 33 and org apache hadoop hadoop aws 2 7 1
  • 如何使用 Scala Stream 类读取大型 CSV 文件?

    如何使用 Scala Stream 读取大型 CSV 文件 gt 1 Gb 你有代码示例吗 或者您会使用不同的方式来读取大型 CSV 文件而不先将其加载到内存中吗 只需使用Source fromFile getLines正如你已经说过的 这
  • 为什么我无法手动提交此表单?

    我试图在提交表单之前完成一些事情 以下代码运行没有错误 但我的表单从未提交 我不知道出了什么问题
  • 在Azure函数中设置cors标头

    在我的 Azure 函数中 我尝试设置 cors 标头 var response req CreateResponse HttpStatusCode OK response Content new ObjectContent
  • 使用返回 Future 的函数映射 Stream

    有时我发现自己处于这样的境地 Stream X and a function X gt Future Y 我想组合成一个Future Stream Y 而且我似乎找不到办法做到这一点 例如 我有 val x 1 until 10 toStr
  • 如何删除 Apache Mesos 中的孤立任务?

    该问题可能是由 Mesos 和 Marathon 引起的不同步 https github com mesosphere marathon issues 616 但是 GitHub 上提到的解决方案对我不起作用 当我发现孤立任务时 我所做的是
  • 构建成功时 Eclipse (CDT) 中出现可疑错误消息

    使用面向 C C Linux 开发人员的 Eclipse IDE 版本 Indigo释放 与克 4 1 2 on 科学 Linux CERN 5 RHEL 5 我目前正在开发一个项目 其中使用Qt4GUI 以及 Apache 的log4cx
  • Android应用程序架构——MVVM还是MVC?

    我有一个正在开始处理的 android 项目 我希望它的结构尽可能健壮 我有 WPF MVVM 背景 并且阅读了一些有关 Android 应用程序架构的内容 但我找不到关于我应该使用哪种架构的直接明确的答案 有些人建议使用 MVVM htt
  • 如何在 JavaScript 中使用五位数长的 Unicode 字符

    在 JavaScript 中我可以这样做 foo u2669 1 4 note 但我不能这样做 foo u1D15D full note five hex digits 它将被解释为 u1D15 后跟 D 有没有解决方法 2012 年 7
  • Android 在自定义项目上应用主题

    我可以声明一个主题和一个特定的按钮设计 问题是这种样式适用于所有按钮 我想声明一个具有自己风格的特定按钮 独立于其他按钮更改每个主题 类似于 保存 按钮 任何想法 我尝试了以下方法
  • 查看 Windows 上进程的打开文件处理程序

    我想查看 Windows 上进程的打开文件处理程序 以验证读取了正确的配置文件 ProcMon 和其他工具显示引用的模块 dll 我需要查看所有文件 例如 xml txt 等 的打开文件句柄 流程浏览器 http technet micro
  • pyfacebook 中是否存在 Graph Api 模块

    我已经安装了 pyfacebook 以及 python sdk 即使我收到如下错误 使用此代码时 import facebook token my token graph facebook GraphAPI token profile gr
  • 如何将Android应用程序的方向锁定为手机中的纵向和平板电脑中的横向?

    我正在开发一个 Android 应用程序 当用户旋转设备时 我不希望其方向更改为横向模式 另外 我希望锁定方向在手机上为纵向模式 在平板电脑上为横向模式 这可以实现吗 如果可以 如何实现 谢谢 您只需在以下内容中定义以下属性activity
  • 为什么 C++ 需要通过标头或语句进行前向声明,而 Java 不需要? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果你不转发声明你的函数 Java 不会抱怨 而 C 会抱怨 我知道 C 涉及预处理 但我想了解更多 目标文件 Java 编译器依赖于
  • 替代嵌套在另一个表单中的 Ajax 上传表单

    我有一个 HTML 表单来编辑我工作地点的数据库系统中人员的详细信息 表单的一部分允许用户上传该人的照片 然而 这给我带来了麻烦 因为我试图让用户上传图片并在提交要保存的人员详细信息之前看到它已成功上传 从而使表单更加 Ajax y 给我带
  • 如何将 SketchUp 模型导出到 Three.js?

    我通过谷歌创建了一个模型SketchUp 我想将其导出到three js节省一些时间 因为我想使用SketchUp比three js 那么有人可以告诉我该怎么做吗 非常感谢 您可以从 SketcUp 导出 collada DAE 然后使用
  • 移动包含子模块的 git 工作副本

    Git 最近的一项变化改变了 git使用子模块时处理目录 而不是拥有一个 git每个子模块 现在所有内容都位于 根级别 git目录 与包括子模块的工作副本相对应的目录 然后 在每个子模块中 创建一个文件 该文件指向该子模块的新位置 git目