git: 使用submodule进行托管

问题描述:

当一个prj.git项目里引用了另外一个moduleA.git项目作为其一个子模块,由于该模块未完善后续可能将继续升级,也就是需要两套git分别管理prj.git与moduleA.git,而prj.git又使用了moduleA.git。

使用submodule进行管理

  1.  新建一个项目git

  

  2. 新建一个mouleA.git

  

  3. 在prj.git里添加moudleA.git。

  

  

带有submodule仓库的克隆方法

  1. 直接clone的话是没有submodule信息的,只有文件夹。

  

  这是因为,父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header。

  不过可以先对submodule初始化,然后更新,就可以clone到原module的内容。

  

  2. 第二种方式使用递归clone,添加参数 --recursive。

  

在远程修改submodule及本地更新submodule

  1. 远程更新submodule

  

  2. 本地更新submodule

  2.1 直接pull或者更新submodule是无效的,因为远程prj.git并未记录submodule有任何的改动,即远程prj.git不知道也根本不管submodule有没有更新,除非你在prj.git有commit记录。

  

  2.2 在这种情况下仍要更新submodule,就需要直接进入submodule仓库下并切换为需要的分支进行更新。

  

  2.3 这时prj.git 理所当然地发生了变化,根据需要提交变更记录即可。

  

在本地修改submodule并push后,他处submodule更新流程

  1. 本地A修改submodule并Push

    1.1. 现在本地submodule添加一个新功能:c.md,然后push。

   

    1.2 接着,提交本次prj.git的变更记录:

   

  2. 他处B更新submodule

    2.1 pull后发现submodule发生了改动:

    

    2.2 使用update对submodule进行更新

    

删除submodule

  1.  git rm moduleA,即可

  

  这样做git的config文件中仍有相关记录,但是不影响使用,如果新clone的话,就不会有相关的记录了。

  如果介意可以手动将该文件的相关行删除。

  

  2. 新clone后,config则无相关记录

  

  

  

原文地址:https://www.cnblogs.com/qiyuexin/p/9926630.html

时间: 2024-08-25 01:09:06

git: 使用submodule进行托管的相关文章

使用百度网盘+Git,把版本控制托管到云端

之前公司的一个项目使用SVN来做的版本控制,服务器设在我这台电脑上.然后是出于某些原因,我的电脑IP变了多次,每变一次就要重新绑定静态ip,甚是烦人.同时SVN这种集中式的版本控制服务在我关闭了我的电脑之后,其他小伙伴们就无法同步了. 于是乎也懒得去研究SVN是否支持远程云仓库的方式来共享项目,转投最近更火的Git. Git是个好东西啊,可以直接remote到github的仓库上,不就解决了鄙人的问题么?不过github毕竟是开源的(除非你愿意每个月花几美刀去把仓库转私有),总不愿意自己公司的项

Ⅲ. 通过git管理github上托管的代码

实际上,通过git管理github上托管的代码,这就是git管理远程仓库! 只需要在,从"暂存区"提交到"Git仓库"之后,使用一个[git push]命令! 注意:在提交到远程仓库之前,需要先fork(克隆)该远程仓库,即先将远程仓库(项目)下载到本地!然后进行修改之后进行提交! 第一步:fork远程github仓库到本地 git clone https://github.com/xxx/Demo.git 上面代码中,地址来源: 此时,在文件夹下就会出现克隆的远程

git中submodule子模块的添加、使用和删除

git中submodule子模块的添加.使用和删除 原文链接:https://blog.csdn.net/guotianqing/article/details/82391665背景项目中经常使用别人维护的模块,在git中使用子模块的功能能够大大提高开发效率. 使用子模块后,不必负责子模块的维护,只需要在必要的时候同步更新子模块即可. 本文主要讲解子模块相关的基础命令,详细使用请参考man page. 子模块的添加添加子模块非常简单,命令如下: git submodule add <url>

Androidstudio 配置git与将代码托管到码云

1.安装git 下载的是百度软件中心提供的git,下载地址是:http://rj.baidu.com/soft/detail/30195.html?ald 下载好之后,一直下一步下一步即可,不过要注意,git的安装目录,这个目录后面要在AS里配置. 2.配置AS 打开setting,找到git,配置git.exe路径,一定要是bin/git.exe,而不是cmd/git.exe 3.安装码云插件 按照下图标注的步骤,安装gitosc插件,安装完成后,重启AS 4.将已有项目/新建项目上传至码云

Git使用之-第三方托管oschina

一.git 简介 1.Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 2.Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. 3.Git 是由“Linux之父” Linus Torvalds 创建的.因为他发现找不到满意的方案来管理 Linux Kernel 联合开发的版本控制,就自己写了 Git. 说到优势,那么自然是相对与SVN而言的 版本库本地化,支持离线提交,相对独立不影响协同开发.每个开发者都拥有自己的版本控制库

Git 子模块 - submodule(转)

原文地址: http://www.cnblogs.com/kelsen/p/5918672.html 有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另一个. Git 通过子模块来解决这个问题. 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录. 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立. 开始使用子模块 git

Git 子模块 - submodule

有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另一个. Git 通过子模块来解决这个问题. 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录. 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立. 开始使用子模块 git submodule add remotePath [localPath] 克隆含有子模块的项目 gi

GIT 使用 osc 在线托管

今天一看,osc的代码托管自己开了2年了,csdn的代码托管也开了3年了,只是项目里有几个了了就是fork来的,自己的也没认真写,之前工作也用git,现在改用自己的git了. 所以就把Key-gen 弄好了,在osc上面 开干了. 果然还是先有git, 对比的话感觉osc也没错,毕竟在国内,而且可以建私有项目. csdn的差别是, csdn的git是2g, osc貌似是5G, 但是github就不能创建私有项目了.要么用微软的tfs, 可是tfs的差别就是必须要有visual studio,ps

git使用与代码托管

平时自己写的简单程序文件太多,可以放到代码托管的网站.比如国内的gitee.com, 好吧,只是把这个网站当网络云盘用了.在gitee网站上加上程序运行环境,使用文档,写好README.md使用介绍.而在这些代码托管网站上传下载代码就要用到git这个软件.git是个工具,需要在linux上安装好.其他代码网站github也是一样的git用法. git的使用视频教程:https://www.bilibili.com/video/av58666078/ 记录下上传的第一个项目(传个简单的一个c文件)