問題描述
這個問題出現的情況是,子模塊的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代碼,發現不需要輸入密碼了。