GitHub真是个开源大宝库,不只能学习代码,还能学习git的使用!

最近在研究Off-the-Record-iOS项目(https://github.com/chrisballinger/Off-the-Record-iOS)时,学习实践了gitsubmodule的用法!

这个项目中有一个Submodules文件夹,包含了该项目所引用到的其他GitHub上的开源项目,最开始没注意到,直接Download ZIP拿下来的,发现XCode项目中一堆红色文件名,才发现原来还有很多依赖项目,仔细看了一下还挺不少,于是果断放弃手动挨个下载…

搜索了一下,发现项目的issue #87有人问到了类似的问题:https://github.com/chrisballinger/Off-the-Record-iOS/issues/87,按照下面的回答,重新git clone了项目,并使用git submodule init && git submodule update(1.6以后版本也可以直接用git clone –recursive代替)来更新项目中的依赖子模块,更了前几个之后又出现了新的错误:

Submodule path ‘Submodules/DAKeyboardControl’: checked out ‘5352d1ff2d1131d974d94406ed8fcf8eb068aa72′
Cloning into ‘Submodules/LibOrange’…
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Clone of ‘git@github.com:ChatSecure/LibOrange.git’ into submodule path ‘Submodules/LibOrange’ failed

这个issue #105也提到了:https://github.com/chrisballinger/Off-the-Record-iOS/issues/105,根据作者的回答,需要更新对应项的git url,替换为https方式!

于是进入项目根目录,vi .gitmodules,编辑文件,找到提示问题的模块LibOrange,修改url = git@github.com:ChatSecure/LibOrange.git为url = https://github.com/ChatSecure/LibOrange.git,:wq保存退出。

修改好模块url后还是不能直接更新,经过几次尝试,发现需要重新同步子模块的url,执行git submodule sync,刷新url,然后再次执行git submodule update –init,这样又会提示:

fatal: Needed a single revision
Unable to find current revision in submodule path ‘Submodules/LibOrange’

这个问题参考这里:http://blog.csdn.net/frank2336/article/details/7414545,解决方法时rm -rf LibOrange删掉已存在的文件夹。

删除后,返回项目根目录,再次执行git submodule update –init就不再有问题了:

remote: Counting objects: 1052, done.
remote: Compressing objects: 100% (547/547), done.
remote: Total 1052 (delta 439), reused 1050 (delta 438)
Receiving objects: 100% (1052/1052), 3.96 MiB | 46 KiB/s, done.
Resolving deltas: 100% (439/439), done.
From https://github.com/ChatSecure/LibOrange
* branch HEAD -> FETCH_HEAD
Submodule path ‘Submodules/LibOrange’: checked out ‘d7ae559dfebe2eb6cc3996735fa6081e1aaa02fa’

这文章总结的太好了!!

github克隆项目中的子模块submodule时遇到的问题的更多相关文章

  1. 如何在 GitHub 的项目中创建一个分支呢?

    如何在 GitHub 的项目中创建一个分支呢? 其实很简单啦,直接点击 Branch,然后在弹出的文本框中添加自己的 Branch Name 然后点击蓝色的Create branch就可以了,这样一来 ...

  2. github air项目中遇到的几个问题及解决(nodejs居多)

    https://github.com/cambecc/air 1.按照github中给出的步骤,执行到npm install,项目中的package.json包含了要安装的包的版本,但是安装的时候,p ...

  3. github克隆项目缓慢

    github浏览或者克隆项目的时候,总是十分缓慢,下面是亲自自测的一种方式,克隆速度可以稍快一些 第一步 访问域名解析网站:https://www.ipaddress.com/ 在网页下方可以看见一个 ...

  4. 在项目中配置PageHelper插件时遇到类型转换异常

    PageHelper是一种常用的分页工具,按照常规方法在mybatis的配置文件中整合它: <?xml version="1.0" encoding="UTF-8& ...

  5. 项目中调用ExcelCom组件时的配置流程

    异常提示如下:         Microsoft Office Excel 不能访问文件“*.xls”. 可能的原因有:        1 文件名称或路径不存在.       2 文件正被其他程序使 ...

  6. 使用 vscode将本地项目上传到github、从github克隆项目以及删除github上的某个文件夹

    安装Git后,可以看到windows环境下有两个命令输入窗口Git CMD 和Git Bash Git GUI是可视化图形界面 Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能 ...

  7. vscode 将本地项目上传到github、从github克隆项目以及删除github上的某个文件夹

    一.将本地项目上传到github 1.创建本地仓库(文件夹) mkdir study//创建文件夹studycd study //进入study文件夹 2.通过命令git init把这个文件夹变成Gi ...

  8. 删除GitHub上项目中的某个文件

    原文地址 https://www.jianshu.com/p/242412b43ca5 1.首先在本地中更新有该项目的最新包 即确保本地项目和git上的项目内容保持同步(git pull拉取项目代码) ...

  9. 向MyEclipse的项目中导入js文件时,出现小红叉

    这个问题困扰我很久.刚开始时,也没有解决,因此也在网上寻找解决方法,还是没能解决.最近做项目时再一次出现了这样的问题,于是决定还是再找找办法.在此,分享一下自己的解决方法,给正处于痛苦中的童鞋们带来解 ...

随机推荐

  1. 使用Velocity 模板引擎快速生成代码

    Velocity 模板引擎介绍 在现今的软件开发过程中,软件开发人员将更多的精力投入在了重复的相似劳动中.特别是在如今特别流行的MVC架构模式中,软件各个层次的功能更加独立,同时代码的相似度也更加高. ...

  2. git 分支策略

    转 http://www.ruanyifeng.com/blog/2012/07/git.html  作者: 阮一峰 如果你严肃对待编程,就必定会使用"版本管理系统"(Versio ...

  3. appium api

    AppiumDriver getAppStrings()      默认系统语言对应的Strings.xml文件内的数据.iOS driver.getAppStrings(Stringlanguage ...

  4. c++文件流

    前言 文件流能够从文件系统中读取数据并向文件中写入数据. 文件输入流适用于读取配置数据.读取保存的文件以及批处理基于文件的数据等任务.Fprintf,fwrite,fputs 文件输出流适用于保存状态 ...

  5. 关于assert的学习

    编写代码时,总会做出一些假设,断言就是用于在代码中捕捉这些假设, 可以将断言看成是异常处理的一种高级形式. c语言assert宏的定义, #include <assert.h> void ...

  6. delphi TOpenDialog

        TOpenDialog     procedure TForm1.Button1Click(Sender: TObject);begin  with TOpenDialog.Create(ni ...

  7. /var/log目录下的20个Linux日志文件功能详解 分类: 服务器搭建 linux内核 Raspberry Pi 2015-03-27 19:15 80人阅读 评论(0) 收藏

    如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...

  8. java websocket工具

    https://github.com/dzharvis/servlet-websocket-server http://redstarofsleep.iteye.com/blog/1488639 ht ...

  9. QT程序打包发布(双击运行)

  10. ios中的界面跳转方式

    ios中,两种界面跳转方式 1.NavgationController本身可以作为普通ViewController的容器,它有装Controller的栈,所以可以push和pop它们,实现你所说的跳转 ...