git填坑日志(1)——git clone --recursive克隆包括子模块的项目报错

当尝试使用`git clone --recursive`克隆包含子模块的项目,若子模块URL为http方式,可能会遇到因缺少用户名和密码导致的错误。解决方法是创建本地的`.git-credentials`文件,存储http访问的用户名和密码,然后通过`git config --global credential helper store`配置git全局凭证助手为store模式,这样就能在不提示的情况下克隆项目。

问题描述

这个问题出现的情况是,子模块的url使用http方式获取的情况下,在clone项目的时候,使用–recursive参数初始化子模块或者git submodule update的时候会直接出现以下报错:

bash: /dev/tty: No such device or address

出现原因

百度了很久,没有看到类似的问题,最后在github上找到了一个issue让我了解了这个问题出现的原因,是因为没有输入用户名和密码,可是奇怪的是,下载子模块的代码的时候并没有直接弹出输入用户名和密码的地方,而是直接报错,看issue中的回答,似乎是因为系统认为没有console可以输入密码(待考证,待研究是否可以跳出输入密码框)

解决方法

我的解决方法是在本地永久缓存使用http方式获取代码的用户名和密码。

  • 找到%home%路径
    一般是路径是C:\Users\windows的用户名,我是直接定位到.gitconfig文件所在的目录了。

  • 建立.git-credentials
    在window下不能直接建立以.开头的文件,所以我使用git bash窗口,直接touch .git-credentials,如果没有权限的话,可以设置权限,或者去其它盘建好文件再拷贝过来。
    文件内容:
    http://你的用户名:你的密码@github.com
    代表的意思是通过设置好的用户名和密码去http://github.com获取代码。

  • 运行git config --global credential helper store
    “store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。

  • 查看.gitconfig文件
    多出一段

[credential]
	helper = store
  • 重新git clone代码(https链接)
    git bash重新clone代码,发现不需要输入密码了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值