git clone 问题总结
问题一: 克隆了一个vm, 使用git http clone 仓库时遇到 could not read from remote repository 500问题
- git http clone 仓库时没有输入用户名,密码; 猜测应该是使用git 的凭据存储中的用户名和密码;
- 删除用户目录下.git-credentials 文件,重新执行git clone ,输入用户名和密码,问题解决;
git 凭据存储
-
基于http 方式的clone每次都需要输入用户名和密码,显然是一件麻烦的事情,git拥有一个凭证系统来处理这个事情;
-
git 选项设置:
1.默认所有都不缓存;
2.“cache” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除;
3.“store” 模式会将凭证用token的形式存放在磁盘中,并且永不过期,除非我们修改了git服务器上的密码;
4.mac 系统中,凭证是以osxkeychain 模式,缓存到系统用户的钥匙串中, 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的; linux 系统放在/home/.git-credentials文件中,windows 系统放在凭据管理器中;
设置git 凭据管理方式:
cache方式:
git config --global credential.helper cache(凭据默认存储在~/.git-credentials), cache 模式--timeout <seconds> 参数,可以设置在内存中的存活时间,(默认是 “900”,也就是15分钟);
store方式:
git config --global credential.helper 'store --file ~/.my-credentials',--file 参数可以指定凭据的存储位置; -
git 中配置多个凭据:
当在git 中配置多个凭据时,git 会按照顺序依次查找,找到凭据则停止;当凭据更新时,git 将用户名和密码发送给所有的存储工具(cache/store),每个工具按照自己的方式来更新凭据;
.gitconfig 文件:
[credential]
helper = store --file ~/.git-credentials
helper = cache --timeout 30000
问题2:git ssh clone 仓库出现 Your account has been blocked问题
- 前同事用自己的账号生成的ssh-key,配置在git-hub 中,克隆出一个vm后,使用git ssh clone,使用的前同事的ssh-key,导致clone 出现上述问题;
- 可以重新用现有的机器人账号生成ssh-key 添加到git-hub中;
ssh-key 生成步骤:
- 打开shell 窗口
-
ssh-keygen -t rsa -C "xxx" -t 指定使用哪种类型算法,-C 指定使用的github 的账户,下图是生成的步骤
image.png
3.将目录/root/.ssh/id_rsa.pub 下文件ssh key添加到git-hub中;