问题

今天在mac电脑提交代码,由于代码库敞开了规矩校验,怎样都提交不上,检查规矩也都是符合的,百思不得其解。

处理计划

经过一番镇定的思考,初步怀疑是git账号的问题,所以依照网上的教程检查

git config --list

成果里边连用户名暗码都没有,更没有

credential.helper=osxkeychain

接着又查找~/.gitconfig文件,也没有发现对应的配置。

查找了好久,仍是无法处理,开端想重新装置git了,重新装置又很慢,所以继续查找清除计划,终于在github上面看到了。

github.com/ryancui92/b…

>>下面是正确的处理方法

$ git config --show-origin --get credential.helper
file:/usr/local/git/gitconfig    osxkeychain

通过vi翻开/usr/local/git/gitconfig文件,发现了该配置信息,所以删除最后一行

credential.helper=osxkeychain

再次提交代码,成功了,老泪纵横。

然后会发现每次pull就会提示输入用户名,那么再设置一次保存暗码就能够了。

git config --global credential.helper osxkeychain

知识点回忆

用了那么久的git,对于git凭据办理仍是需求再回忆一下。

检查git官方对于凭据办理的解说:

假如你运用的是 SSH 方法衔接远端,而且设置了一个没有口令的密钥,这样就能够在不输入用户名和暗码的情况下安全地传输数据。 可是,这对 HTTP 协议来说是不可能的 —— 每一个衔接都是需求用户名和暗码的。 这在运用两层认证的情况下会更费事,因为你需求输入一个随机生成而且毫无规律的 token 作为暗码。

走运的是,Git 具有一个凭据体系来处理这个事情。 下面有一些 Git 的选项:

  • 默认一切都不缓存。 每一次衔接都会询问你的用户名和暗码。
  • “cache” 形式会将凭据寄存在内存中一段时刻。 暗码永远不会被存储在磁盘中,而且在15分钟后从内存中清除。
  • “store” 形式会将凭据用明文的形式寄存在磁盘中,而且永不过期。 这意味着除非你修改了你在 Git 服务器上的暗码,不然你永远不需求再次输入你的凭据信息。 这种方法的缺点是你的暗码是用明文的方法寄存在你的 home 目录下。
  • 假如你运用的是 Mac,Git 还有一种 “osxkeychain” 形式,它会将凭据缓存到你体系用户的钥匙串中。 这种方法将凭据寄存在磁盘中,而且永不过期,可是是被加密的,这种加密方法与寄存 HTTPS 凭据以及 Safari 的主动填写是相同的。
  • 假如你运用的是 Windows,你能够装置一个叫做 “Git Credential Manager for Windows” 的辅助工具。 这和上面说的 “osxkeychain” 十分类似,可是是运用 Windows Credential Store 来控制敏感信息。 能够在github.com/Microsoft/G…下载。

敞开成长之旅!这是我参与「日新计划 2 月更文应战」的第 1 天