在Windows for git 1.7.9+中,在命令提示符下运行以下命令以在文本编辑器中打开配置文件:
git config --global --edit
然后在文件中添加以下块(如果不存在)或相应地编辑它
[credential "https://giturl.com"] username = <user id> helper = wincred
保存并关闭文件。 在上述更改后,您只需提供一次凭证。
正如其他人所说,您可以安装密码缓存助手。我大多只想发布其他平台的链接,而不仅仅是mac。我正在运行一个Linux服务器,这很有帮助: https://help.github.com/articles/caching-your-github-password-in-git/#platform-linux
对于mac:
git credential-osxkeychain
视窗:
git config --global credential.helper wincred
Linux的:
git config --global credential.helper cache git config --global credential.helper 'cache --timeout=3600' # Set the cache to timeout after 1 hour (setting is in seconds)
我觉得static_rtti提供的答案在某种意义上是hacky。不知道这是否早期可用,但Git工具现在提供Credential Storage。
的 缓存模式 强>
$ git config --global credential.helper cache
使用“缓存”模式将凭据保留在内存中一段时间。这些密码都没有存储在磁盘上,并且在15分钟后从缓存中清除。
的 存储模式 强>
$ git config --global credential.helper 'store --file ~/.my-credentials'
使用“存储”模式将凭据保存到磁盘上的纯文本文件,它们永不过期。
我亲自用过 的 商店模式 强> 。删除我的仓库,克隆它然后必须输入我的凭证一次。
参考: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
如果你正在使用Windows,这突然在GitHub上突然开始发生,这可能是由于Github最近发生的 禁用对已弃用的加密算法的支持 在2018-02-22,在这种情况下解决方案只是下载并安装最新版本的全部 Git for Windows 或者只是 适用于Windows的Git Credential Manager 。
我同意“codehugger”并使用“orkoden”的说明它对我有用 - 在netbeans 7.3上 - 当你右键单击文件并选择上下文菜单 - 按下 - 一个'推送到远程'窗口打开 - 有2个选项在这里
origin:https://github.com/myaccount/myproject.git/
https://github.com/myaccount/myproject.git/
正如你所看到的那样,区别在于url中的origin param - 你不想选择这个选项(1)你想检查选项(2),这对我来说很合适。我希望这有助于某人。
窦乐
在将密钥与github一起使用之前,请按照本教程中的此步骤操作 测试SSH连接 :
$ ssh -T git@github.com # Attempts to ssh to GitHub
当我升级到macOS Sierra时,这发生在我身上。看起来ssh代理在升级后被清除了。
$ ssh-add -L The agent has no identities.
简单地跑 ssh-add 找到我现有的身份,输入密码再好。
ssh-add
使用此:用适当的主机名替换github.com
git remote set-url origin git@github.com:user/repo.git
第1步:检查您当前的配置
cat .git/config
你会得到:
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/path_to_your_git.git fetch = +refs/heads/*:refs/remotes/origin/* [user] name = your_username email = your_email [branch "master-staging"] remote = origin merge = refs/heads/master-staging
第2步:删除远程源
git remote rm origin
步骤3:使用您的用户名和密码添加远程源
git remote add origin https://your_git_username:your_git_password@github.com/path_to_your_git.git
git config credential.helper store
注意:虽然这很方便,但Git会将您的凭据以明文形式存储在项目目录下的本地文件(.git-credentials)中(请参阅下面的“home”目录)。如果您不喜欢这样,请删除此文件并切换到使用缓存选项。
如果您希望Git每次需要连接到远程存储库时继续询问您的凭据,您可以运行以下命令:
git config --unset credential.helper
要将.git-credentials中的密码存储在%HOME%目录而不是项目目录中:使用--global标志
git config --global credential.helper store
在URL中输入拼写错误会让git向你询问用户名和密码,愚蠢的git
在Linux Kali,Git 2.7.0版上测试过
尝试:
git clone https://github.com/thisrepodoesntexists/doesntexists.git
orkoden关于在你的终端中使用带有git的钥匙串的答案是不完整的,并引发了错误。这是您需要做的,以保存您在钥匙串中的终端输入的用户名和密码:
curl http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain -o git-credential-osxkeychain sudo mv git-credential-osxkeychain /usr/local/bin sudo chmod u+x /usr/local/bin/git-credential-osxkeychain
然后输入
git config --global credential.helper osxkeychain
如果你已经在curl之前使用git config完成了部分,那就没问题,它会起作用
使用以下命令增加超时时间,以便您可以重新键入密码一段时间
git config --global credential.helper 'cache --timeout 3600'
我用它来制作Bitbucket和Github它适用于两者。你唯一需要做的就是 3600 是几秒钟,将它增加到你想要的任何程度。我把它改为 259200 大约30天。这样我每隔30天左右重新输入一次密码。
3600
259200
我想你解决了你的问题,但是我没有看到这里的解决方案对我有所帮助,所以在这里。
输入终端:
echo "" > ~/.ssh/known_hosts
这将清空你的 known_hosts 文件,你必须添加你使用和连接的每个主机,但它解决了问题。
known_hosts
使用SSH推送/拉取git on windows和Github的指南 http://nathanj.github.io/gitguide/tour.html
正如static_rtti所说,改变
https://github.com/username/repo.git git://github.com/username/repo.git
至
ssh://git@github.com/username/repo.git
我自己将.git / config文件中的https更改为ssh,但它仍然无法正常工作。然后我看到你必须将github.com改为git@github.com。获取实际正确URL的一个好方法是转到项目页面并单击此按钮
将HTTPS更改为SSH以获取正确的URL
然后将此URL添加到配置文件中。
如果Git每次尝试与GitHub交互时都会提示您输入用户名和密码,那么您可能正在使用存储库的HTTPS克隆URL。
使用HTTPS远程URL有一些优点:它比SSH更容易设置,并且通常通过严格的防火墙和代理工作。但是,每次提取或推送存储库时,它还会提示您输入GitHub凭据。
您可以配置Git为您存储密码。 的 对于窗户 强> :
根据您的配置,有不同类型的身份验证。这里有几个:
git credential-osxkeychain 。
如果您的凭据无效,请将其删除:
git credential-osxkeychain erase
要么:
printf "protocol=https\nhost=github.com\n" | git credential-osxkeychain erase
因此git不会再次要求您提供钥匙串许可。然后再次配置它。
看到: 从OSX Keychain更新凭据 在GitHub
您的SSH RSA密钥。
为此,您需要将SSH密钥与已添加的密钥进行比较,然后进行检查 ssh-add -L / ssh-add -l 如果你使用正确的身份。
ssh-add -L
ssh-add -l
您的HTTPS身份验证(如果您正在使用 https 代替 ssh 协议)。
https
ssh
使用 ~/.netrc ( %HOME%/_netrc 在Windows上),以提供您的凭据,例如
~/.netrc
%HOME%/_netrc
machine stash1.mycompany.com login myusername password mypassword
学到更多: 与GitHub同步 在SO
我想你可能有错误的git repo url。
打开 .git/config 并找到[远程“原点”]部分。确保你正在使用 SSH 一:
.git/config
SSH
如果单击,您可以在回购的主页面中看到ssh url clone or download 并选择 ssh
clone or download
而不是 https 要么 git 一:
git
您现在可以验证 只是 该 SSH Key 而不是 username 和 password 。
SSH Key
username
password
的 [编辑:] 强> 如果Git抱怨的话 'origin' has already been added , 打开 .config 文件和编辑 url = "..." 之后的部分 [remote origin] 如 url = ssh://github/username/repo.git
'origin' has already been added
.config
url = "..."
[remote origin]
url = ssh://github/username/repo.git