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

问题描述

这个问题出现的情况是,子模块的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代码,发现不需要输入密码了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章