`
aigo
  • 浏览: 2675454 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

git submodule用法(引用外部仓库)

git 
阅读更多

原文作者:@玄冬Wong

 

如果一个仓库中,引用了几个其他几个仓库,想在更新本次仓库的时候同时更新将其他几个引用仓库,那么可以使用git submodule。

要使用submodule,初始化时貌似只能通过命令行初始化,之后跟新可以通过TortoiseGit客户端来更新。

另外,submodule必须引用整个仓库,无法引用某个仓库的某个子目录

 

添加

具体操作如下:

1,先打开git-bash命令行,然后定位到需要引用的目录位置,然后执行命令,例如:

git submodule add ssh://admin@127.0.0.1:29418/myproject.git bbbb

这条命令意思是,将远程仓库myproject下载到当前目录的bbbb目录下(bbbb会自动新建)。命令在哪个目录下执行,则bbbb目录相对与哪个目录

注:如果已经存在.gitmodules文件了,执行add命令时需要添加参数:-f,否则无法add成功,例如:

git submodule add -f ssh://admin@127.0.0.1:29418/myproject.git bbbb

 

2,以后就可以通过TortoiseGit客户端更新了:Git Sync -》 submodule update



 

删除

如果要删除submodule,看了stackoverflow上的问答,发现删除git submodule挺麻烦的,官方还没一个专门的命令来删除submodule(至少到当前2.x版本仍然存在这个问题),需要手动删除,手动删除分三步:

这里假设之前添加的bbbb submodule位置在xxx/yyy/目录下

1,删除.git/config中的submodule配置:

[submodule "xxx/yyy/bbbb"]

url = ssh://admin@127.0.0.1:29418/myproject.git

 

2,删除.gitmodules中的submodule配置:

[submodule "xxx/yyy/bbbb"]

path = xxx/yyy/bbbb

url = ssh://admin@127.0.0.1:29418/myproject.git

 

3,删除.git/modules/bbbb

 在.git/modules/目录下,存放了所有submodule的仓库,删除对应的仓库

 

删除操作参考:

http://stackoverflow.com/questions/19915679/trouble-with-adding-removing-a-git-submodule

 

  • 大小: 99.5 KB
分享到:
评论

相关推荐

    Git Submodule使用完整教程(小结)

    Git Submodule是Git的一个高级特性,用于在一个Git仓库中管理另一个Git仓库的引用。它允许你在主项目中包含外部的依赖或子项目,而这些子项目可以独立地进行版本控制和更新。这样,你可以在多个项目之间共享和维护同...

    git中submodule子模块的添加、使用和删除的示例代码

    Git子模块提供了一种有效管理外部依赖的方法,允许你跟踪并控制它们的版本。虽然它们的使用相比基本的Git操作更复杂,但一旦熟悉了相关命令,它们能显著提高团队协作效率,尤其是在大型项目中。理解如何添加、使用、...

    git常用命令和冲突解决.doc

    2.初始化子模块:`$ git submodule init` ----只在首次检出仓库时运行一次就行 3.更新子模块:`$ git submodule update` ----每次更新或切换分支后都需要运行一下 4.删除子模块:(分 4 步走哦) 1) `$ git rm --...

    git的详细使用教程.pdf

    ### Git的详细使用教程 #### 一、基础概念 ...通过上述教程,您可以全面掌握Git的基本使用方法和一些高级特性。在实际项目开发中,根据具体的需求灵活运用这些功能将会极大地提高团队的协作效率和代码的质量。

    extjs:在项目中用作 git-submodule 的 extjs 的 git 存储库

    在本项目中,`extjs` 被作为 `git-submodule` 使用,这是一种在Git仓库中管理和跟踪其他独立Git仓库的方法。下面我们将深入探讨ExtJS 4.2.1及其与Git子模块的相关知识。 1. **ExtJS 4.2.1**: - 版本特性:ExtJS ...

    Git学习手册

    - **添加子模块:** 使用`git submodule add`命令将另一个Git仓库作为子模块添加到项目中。 - **初始化子模块:** 使用`git submodule init`命令初始化子模块。 - **更新子模块:** 使用`git submodule update`...

    NewFramework:测试git的用法

    例如,你可以利用Git的特性来管理npm模块的依赖,使用`package.json`文件记录项目依赖,并通过`git submodule`管理外部库。 此外,Git还提供了强大的工具如`git blame`(查看每一行代码的最后修改者)和`git log`...

    gittoolbox-211.9.9.zip

    11. **高级用法**:如子模块(`git submodule`)管理外部项目,Stash用于临时保存未完成的工作,以及`git cherry-pick`用于从其他分支选择特定提交。 12. **故障排查与修复**:处理常见问题,如解决丢失的分支,修复...

    Android 引用第三方库的方法.zip源码资源下载

    本资源包“Android 引用第三方库的方法.zip”很可能包含详细教程或示例代码,帮助开发者理解如何在Android项目中引入外部库。以下是关于Android引用第三方库的常见方法及其详解: 1. **Gradle依赖** - **添加远程...

    test-git-repo:回购学习git

    在实际项目中,Git还提供了一些高级用法,如子模块(Submodule)用于管理依赖的外部项目,标签(Tag)用于标记特定版本,以及 cherry-pick 命令用于从一个分支选择特定的提交并应用到另一个分支。 在"test-git-repo...

    gitSubmoduleDemo-mainProject

    Git子模块(Git Submodule)是Git中一个强大的特性,用于管理项目中的外部依赖或子项目。在"gitSubmoduleDemo-mainProject"这个示例中,我们可能正在探索如何在一个主项目中有效地集成和管理其他独立的Git仓库。让...

    git-subtree-cheat-sheet:git-subtree 备忘单

    Git-subtree 是 Git 中的一个高级工具,用于将一个 Git 子目录作为一个独立的 Git 仓库进行管理和合并。这个工具在处理复杂项目结构时非常有用,尤其是当你需要在多个项目之间共享代码库,或者在一个大型项目中引入...

    MetodyGit2

    9. **submodules**:在大型项目中,Git子模块(`git submodule`)允许你管理项目依赖的外部库或组件。 10. **故障排除**:如误删本地文件,可以使用`git checkout -- <file>`恢复;忘记提交,`git stash`可以暂存未...

    git-secondstep

    1. **子模块(Submodule)**:当项目依赖其他项目时,使用 Git 子模块可以更好地管理外部库。 2. ** cherry-pick**:挑选特定的提交应用于其他分支,常用于修复已发布版本的 bug。 3. **bisect**:通过二分查找法...

    Rutgers:我所有的罗格斯大学回购作为子模块

    `git clone`命令用于复制一个现有的Git仓库,而`--recursive`选项特别重要,它告诉Git也要克隆该仓库中任何子模块的引用。子模块是Git仓库中嵌套的其他独立Git仓库,通常用于管理项目中依赖的外部代码库。在这个例子...

    subtreeEx

    - **什么是Subtree**:Git subtree是一种将两个独立的Git仓库进行部分集成的方法。它将一个仓库作为一个子目录添加到另一个仓库中,这样你可以在主项目中工作,同时能够拉取和提交子项目的变化。 - **为什么使用...

    test_vcs_link_repo

    在Git中,可以使用`git submodule`命令来实现。这允许项目引用外部代码库,保持独立更新,并在主项目中进行版本控制。 **测试** 在软件开发中,测试是确保代码质量的重要环节。针对VCS,测试可能涉及以下方面: 1...

    tempctrl:发酵温度控制器

    在克隆此仓库后,为了能够完整地获取所有必要的代码,用户需要执行 "git submodule init" 命令来初始化子模块,确保所有依赖都被正确地下载和设置。 发酵温度控制器通常涉及硬件接口和嵌入式编程,但这里提到的是...

    SultanBot:SultanBot

    - **POCO库的应用**:理解POCO库的组件和使用方法,可以帮助开发者快速实现网络通信、数据处理等功能。 - **跨平台兼容性**:由于vcpkg支持多平台,SultanBot可能设计为跨平台应用程序,这意味着要考虑不同操作系统...

Global site tag (gtag.js) - Google Analytics