首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何添加和提取在.gitmodules文件中指定的子模块,即使它们没有添加到当前存储库中

在.gitmodules文件中指定的子模块可以通过以下步骤进行添加和提取,即使它们没有添加到当前存储库中:

  1. 添加子模块:
    • 打开终端或命令行工具,并导航到存储库的根目录。
    • 使用以下命令添加子模块:
    • 使用以下命令添加子模块:
    • 其中,子模块仓库URL是指子模块的远程仓库地址,子模块路径是指子模块在当前存储库中的相对路径。
    • 提交更改:
    • 提交更改:
  • 提取子模块:
    • 打开终端或命令行工具,并导航到存储库的根目录。
    • 使用以下命令初始化子模块:
    • 使用以下命令初始化子模块:
    • 使用以下命令更新子模块:
    • 使用以下命令更新子模块:
    • 如果子模块有更新,可以使用以下命令拉取最新的子模块代码:
    • 如果子模块有更新,可以使用以下命令拉取最新的子模块代码:

注意事项:

  • 在添加和提取子模块时,需要确保.gitmodules文件中已经正确指定了子模块的信息。
  • 在提交更改时,需要同时提交.gitmodules文件和子模块的相关文件。
  • 在拉取最新的子模块代码时,需要注意子模块的远程仓库是否可访问。

对于以上操作,腾讯云并没有特定的产品或服务与之直接相关。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Git 工具 - 子模块: submodule与subtree的使用

也许是第三方库,或者你独立开发的,用于多个父项目的库。 所以需要提取一个公共的类库提供给多个项目使用,但是这个library怎么和git在一起方便管理呢?...只能在子版本库中修改,是单向的; submodule没有直接删除子版本库的功能; subtree则可以实现双向数据修改。...而这正式git submodule的核心原理,Git在处理submodule引用的时候,并不会去扫描子仓库下的文件的变化,而是取子仓库当前的HEAD指向的commit的hash值,当我们对子仓库进行了更改后...在暂存区所以我们才发现了new commits这种提示语,Git并不关心子模块的文件如何变化,我只需要在当前提交中记录子模块的commit的hash值即可,之后我们从父级仓库拉取子仓库的时候,Git拉取了本次提交记录中的子模块的...我们假设你一开始在主仓库并没有采用子模块的开发方式,而是在另外的开发分支使用了子仓库,那么当你从开发分支切回到没有采用子模块的分支的时候,子模块的目录并不会被Git自动删除,而是需要你手动的删除了。

2.8K10
  • Git 中文参考(四)

    它使用.gitmodules中的相同设置作为模板。如果 URL 是相对的,则将使用默认远程解析。如果没有默认远程,则假定当前存储库位于上游。 可选参数限制将初始化哪些子模块。...如果指定了--force,则子模块将被检出(使用git checkout --force),即使包含存储库的索引中指定的提交已经与子模块中检出的提交匹配。...运行更新时(仅对结帐过程有效),在切换到其他提交时,丢弃子模块中的本地更改;并且始终在子模块中运行 checkout 操作,即使包含存储库的索引中列出的提交与子模块中签出的提交匹配也是如此。...FILES 初始化子模块时,使用包含存储库的顶级目录中的.gitmodules文件来查找每个子模块的 URL。该文件的格式应与GIT_DIR/config相同。...如果没有这些选项,该命令仅将补丁应用于文件,并且不要求它们位于 Git 存储库中。 此命令应用修补程序但不创建提交。

    21510

    Git实战

    ,我也会努力将其优化的更加的符合工作场景 说明 1、在[…]中的内容,需要根据实际情况进行修改 如何本地与远程建立信任联系?...git remote remove origin #将本地所有文件添加到Git中,进行监管 git add ....添加子模块 git submodule add [远程仓库地址] [相对于父模块的相对路径] 注: 直接手动更改gitmodule文件是没有用的哦 远程仓库地址要先于子模块之前准备好 子模块的名称是可以与...[相对于父模块的相对路径]不一致的 创建完成以后会生成.gitmodules与.gitattributes这两个文件 .gitmodules和.git/config保存着子模块的信息 从远程仓库获取所有模块数据...先清空.gitmodules中的内容 再执行文件的删除 ———— 其他命令 # .gitmodules中子模块的内容更新到.git/config中 git submodule init gitmodules

    87010

    Git 中文参考(一)

    以下描述将低级命令划分为操作对象(在存储库,索引和工作树中)的命令,询问和比较对象的命令,以及在存储库之间移动对象和引用的命令。...分支描述会自动添加到格式补丁封面信函或请求摘要中。 browser..cmd 指定用于调用指定浏览器的命令。在 shell 中使用作为参数传递的 URL 计算指定的命令。...fetch.negotiationAlgorithm 控制在协商服务器发送的包文件的内容时如何发送有关本地存储库中的提交的信息。...submodule.alternateLocation 指定在克隆子模块时子模块如何获取备用模块。可能的值为no,superproject。默认情况下,假定no,不添加引用。...在内部镜像的情况下,分两步执行镜像,一个用于获取不受信任的对象,然后执行第二次“推送”(将使用隔离区)到另一个内部存储库,并让内部客户端使用此推送到存储库,或禁止内部提取,只有在完整的“fsck”运行时才允许它们

    29720

    Git 中文参考(五)

    目前,以下操作是属性感知的。 退房和登记入住 当 git checkout 和 git merge 等命令运行时,这些属性会影响存储库中存储的内容如何复制到工作树文件。...它们还会影响 Git 如何在 git add 和 git commit 中存储您在存储库中的工作树中准备的内容。 text 此属性启用并控制行尾标准化。...创建档案 export-ignore 具有export-ignore属性的文件和目录不会添加到存档文件中。...所有子模块路径在.gitmodules 文件中必须是唯一的。 submodule..url 定义可以从中克隆子模块存储库的 URL。....branch 用于跟踪上游子模块中的更新的远程分支名称。如果未指定该选项,则默认为 master 。 .的特殊值用于指示子模块中分支的名称应与当前存储库中当前分支的名称相同。

    22310

    Git Submodule项目子模块管理

    模块化与组件化 最近一直在研究客户端的组件化/模块化问题,除了将项目拆分为多个小的子模块,还会涉及到多个子模块管理的问题。下面说一些在模块化开发中的一些基本知识。...说明:每个业务模块都可以拥有自己独有的 SDK 依赖和自己独有的 UI 资源 (如果是其他业务模块都可以通用的 SDK 依赖 和 UI 资源 就可以将它们抽离到 基础 SDK(CommonSDK 和 UI...使用命令git status可以看到多了两个需要提交的文件,其中.gitmodules指定submodule的主要信息,包括子模块的路径和地址信息,moduleA指定了子模块的commit id,使用git...需要注意的是,父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header,所以.gitmodules和moduleA这两项是需要提交到父项目的远程仓库的...删除子模块 删除子模块会涉及到以下几个步骤: 删除.gitsubmodule里相关部分; 删除.git/config 文件里相关字段; 删除子仓库目录。

    89820

    Git 中文参考(二)

    请注意,在使用-s克隆的存储库中运行没有-l选项的git repack会将源存储库中的对象复制到克隆存储库中的包中,从而节省clone -s的磁盘空间节省。...例如,这样就可以安全地向源远程添加额外的 fetch refspec。 由于当前实现的限制,一些配置变量在初始提取和检出之后才会生效。已知未生效的配置变量为:remote....它只添加指定文件在 add 命令运行时刻的内容;如果您希望下次提交(commit)中包含后续更改,则必须再次运行git add以将新内容添加到暂存区中。...-p --patch 以交互方式选择暂存区和工作树之间的修改,并将它们添加到暂存区中。这使用户有机会在将修改后的内容添加到暂存区之前查看差异。...--no-warn-embedded-repo 默认情况下,若未使用git submodule add在.gitmodules中创建条目时就向暂存区中添加嵌入式存储库,git add会发出警告。

    20810

    Git必备命令-子模块

    也许是第三方库,或者你独立开发的,用于多个父项目的库。现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。...开始使用子模块 我们首先将一个已存在的 Git 仓库添加为正在工作的仓库的子模块。你可以通过在 git submodule add 命令后面加上想要跟踪的项目的相对或绝对 URL 来添加新的子模块。...在本例中,我们将会添加一个名为 “DbConnector” 的库。...当你在克隆这样的项目时,默认会包含该子模块目录,但其中还没有任何文件: $ git clone https://github.com/chaconinc/MainProject Cloning into...例如,你想要 DbConnector 子模块跟踪仓库的 “stable” 分支,那么既可以在 .gitmodules 文件中设置 (这样其他人也可以跟踪它),也可以只在本地的 .git/config 文件中设置

    1.1K20

    8. git-submodule 子模块

    子模块的添加 git submodule add 其中,url 为子模块的路径,path 为该子模块存储的目录路径。...执行成功后,git status 会看到项目中修改了.gitmodules,并增加了一个新文件夹(为刚刚添加的路径) 使用命令 git status 可以看到多了两个需要提交的文件,其中 .gitmodules...指定submodule 的主要信息,包括子模块的路径和地址信息,moduleA 指定了子模块的commit id,使用 git diff 可以看到这两项的内容。...需要注意的是,父项目的 git 并不会记录 submodule 的文件变动,它是按照 commit id 指定 submodule 的 git header,所以 .gitmodules 和 moduleA...从存储库中删除所有 Git 缓存的子模块(Deleting all Git cached submodules from repository) # deinit all submodules from

    69420

    Git中文命令大全

    --separate-git-dir= # 不要将克隆的存储库放置在它应该存在的位置, 而应将克隆的存储库放置在指定的目录中,然后创建一个与文件系统无关的...# 在工作树中交互添加修改的内容到索引 -p, --patch # 在索引和工作树之间交互地选择补丁块, 并将它们添加到索引中 -e, --edit...,修改和删除索引条目以匹配工作树 --no-all, --ignore-removal # 通过添加索引未知的新文件和工作树中修改的文件来更新索引, 但忽略已从工作树中删除的文件当没有使用...# 仅显示已更改文件的名称和状态 --submodule[=] # 指定如何显示子模块中的差异 --color[...可以使用任何过滤字符的组合(包括无)当*(全部或无)添加到组合中时,如果有任何文件与比较中的其他条件匹配,则选择所有路径; 如果没有与其他标准匹配的文件,则不会选择任何内容 -S

    29900

    Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)

    如果某些文件,在项目A和项目B中都会用到,例如组件库,那么这些文件可以作为 submodules 来管理,减少重复代码。(当然,该场景下npm包是另一解决方案,你需要选择一种方案。)解决团队维护难题。...图片submodule 的版本号主项目还保存了对应 submodule 的版本号(commit id),没有冗余存储 submodule 的代码。...这是更推荐的方式。因为很多时候 submodule 是对主项目仓库有依赖的。可能它是个组件库,没有运行环境,需要在主项目中debug。这点非常方便!...注意事项当你在文件夹B中做commit后,文件夹B里面就有了新的 commit id。此时主项目A中所记录的 submodule 的commit id也会更新。...,追踪任意指定的子模块分支(而非默认的主分支master)。

    29.5K146

    Git 中文参考(三)

    X是一个独立的根提交,它添加了一个新文件side,Y修改了它。 Y是 TREESAME 到X。它的合并Q将side添加到P,Q将 TREESAME 添加到P,但不添加到Y。...可以使用过滤器字符的任何组合(包括无)。当*(全部或全部)添加到组合中时,如果有任何文件与比较中的其他条件匹配,则选择所有路径;如果没有与其他条件匹配的文件,则不会选择任何内容。...例如,上游在超级项目的刚刚提取的提交中添加了一个新的子模块,子模块本身无法获取,因此无法在以后检查该子模块而无需再次进行提取。预计将在未来的 Git 版本中修复。...安全 设计提取和推送协议的目的不是为了防止一方窃取不打算共享的其他存储库中的数据。如果您需要保护私有数据免受恶意对等方的攻击,那么最佳选择是将其存储在另一个存储库中。这适用于客户端和服务器。...例如,当上游在超级项目的刚刚提取的提交中添加了一个新的子模块,子模块本身无法获取,因此无法在以后检查该子模块而无需再次进行提取。这预计将在未来的 Git 版本中被修复。

    19910

    git submodule 完整用法整理

    **.gitmodules**文件。...拉取所有子模块 2.1创建带子模块的版本库 例如我们要创建如下结构的项目 project |--moduleA |--readme.txt 创建project版本库,并提交readme.txt文件...,其中.gitmodules指定submodule的主要信息,包括子模块的路径和地址信息,moduleA指定了子模块的commit id,使用git diff可以看到这两项的内容。...这里需要指出父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header,所以.gitmodules和moduleA这两项是需要提交到父项目的远程仓库的...,发现用下面的方式也可以,服务器记录的是.gitmodules和moduleA,本地只要用git的删除命令删除moduleA,再用git status查看状态就会发现.gitmodules和moduleA

    4.7K20

    7.11 Git 工具 - 子模块

    你可以通过在 git submodule add 命令后面加上想要跟踪的项目 URL 来添加新的子模块。 在本例中,我们将会添加一个名为 “DbConnector” 的库。...例如,你想要 DbConnector 子模块跟踪仓库的 “stable” 分支,那么既可以在 .gitmodules 文件中设置(这样其他人也可以跟踪它),也可以只在本地的 .git/config 文件中设置...到目前为止,当我们运行 git submodule update 从子模块仓库中抓取修改时,Git 将会获得这些改动并更新子目录中的文件,但是会将子仓库留在一个称作 “游离的 HEAD” 的状态。...如你所见,它也给我们了一些有用的建议,指导接下来该如何做。 最简单的选项是进入每一个子模块中然后手动推送到远程仓库,确保它们能被外部访问到,之后再次尝试这次推送。...另一个主要的告诫是许多人遇到了将子目录转换为子模块的问题。 如果你在项目中已经跟踪了一些文件,然后想要将它们移动到一个子模块中,那么请务必小心,否则 Git 会对你发脾气。

    1.5K20

    git submodule来管理独立git子目录

    在软件开发过程中,通常我们会遇到有一些通用的部分希望抽取出来做成一个公共库的情况,比如安卓和IOS都通用的H5页面。而公共代码库的版本管理是个麻烦的事情。...添加子模块 为当前工程添加submodule,命令如下: git submodule add 仓库地址 路径 其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。...注意:路径不能以 / 结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利 Clone) 命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。...添加完成以后,再将子模块所在的文件夹添加到工程中即可。...使用vim编辑.gitmodules(vim .gitmodule), 删除对应要删除的submodule的行. 2.

    2.1K20

    git submodule 的使用

    当我们要把另一个仓库的代码作为子目录放到当前仓库时,为了防止代码冗余,我们应该使用 git 的子模块 submodule 功能。...我们可以添加多个子仓库。 提交 对主仓库、子仓库都更新代码后,我们提交时,需要依次对两个仓库的 repo 进行提交。...+Subproject commit 8ffcce923b69d314938ce5485f2ac022986aebcb-dirty 也就是说主仓库会记录当前该文件夹所用的子项目的 commit 号,所以应该先提交子仓库...一些文章提到的 --recursive 参数也是一样的作用。 初始化和更新 如果项目拉取时没有加上上面参数,那么需要手动初始化和更新。...,运行: git submodule update 删除 还没提交 git 记录的话,把下载的文件夹和 .gitmodules 中相关内容删除即可。

    91320

    Git 中文参考(六)

    除非指定了--stdout选项,否则输出文件的名称将打印到标准输出。 如果指定了-o,则输出文件将在中创建。否则,它们将在当前工作目录中创建。...我不打算为此添加支持,因为为所有可能的极端情况工作是非常困难和耗时的(Git 也没有这样做)。如果它们足够相似,Git 可以检测它们,则完全支持提交重命名和复制的文件。...160000:gitlink,对象的 SHA-1 引用另一个存储库中的提交。 Git 链接只能由 SHA 或提交标记指定。它们用于实现子模块。 040000:一个子目录。...如果指定它被添加到存档中的文件名前面。 git archive 在给定树 ID 时与给定提交 ID 或标记 ID 时的行为不同。在第一种情况下,当前时间用作存档中每个文件的修改时间。... 如果没有可选的路径参数,则当前工作目录的所有文件和子目录都将包含在存档中。如果指定了一个或多个路径,则仅包括这些路径。 备用额外选项 压缩 -0 存储文件而不是缩小文件。

    28910

    Git常用命令参考手册

    添加子模块 添加完子模块后会发现根目录下多了个 .gitmodules 元数据文件,主要是用于管理子模块。...//github.com/xjh22222228/git-manual.git submodules/git-manual # 添加到指定目录 # -b 指定需要添加仓库的某个分支 git submodule...git subtree 优势: 不会像子模块需要 .gitmodules 元数据文件管理 子仓库会当做普通目录, 其实是没有仓库概念的 支持较旧的Git版本(甚至比v1.5.2还要旧)。...git subtree 劣势: 命令过于复杂, 推送拉取都很麻烦 虽然用于替代子模块, 但使用率并没有子模块广泛 子仓库和主仓库混合在一起, 历史记录相当于有2个仓库的记录 git subtree 命令用法...添加子仓库 --prefix 指定将子仓库存储位置 main 是分支名称 --squash 通常做法是不将子仓库整个历史记录存储在主仓库中,如果需要的话可以忽略整个参数 添加子仓库后, 会跟普通文件一样看待

    1.4K60

    浅析 Git 子模块

    中查找 那么,基于以上几点,如果不得不将第三方源码手动拷贝到项目中,又会带来更多的问题: 第三方库将难以和原库保持同步更新 如果对第三方库做出了较通用的更改和补丁等,无法发布到原库中为其他人所用 对第三方库做出的修改...比如一个通用组件作为子模块分别被公司中不同项目引用,则各个项目组做出的改进,最后都可以汇总到主组件库中,为大家所共享。 II. 如何用起子模块?...2.1 - 添加子模块 在当前项目中,添加已有的第三方库: git submodule add 3RD_LIB_GIT_PATH 默认情况下,子模块会自动放入一个与其仓库同名的子目录中;在末尾也可以加一个自定义的路径参数...Tom's Changes" 2.7 - 删除子模块 从 .gitmodules 文件中删除相关的行 从 .git/config 中删除相关部分 运行 git rm –cached 模块名称> 删除...subtree 用法如下: 4.1 - 第一次添加子目录,建立与 git 项目的关联 # 其中-f意思是在添加远程仓库之后,立即执行fetch git remote add -f 子仓库名> 子仓库地址

    1.4K10
    领券