我创建了一个GitHub存储库,然后使用SSH对其进行了克隆:
git clone git@github.com:BenReilly/all-the-characters.git
我添加了一些文件。
git add .
git commit -m "some message"
git push
这导致系统提示您输入我的用户名和密码。它本身有点怪异,但无论如何我还是输入了它们。然后我得到:
> remote: Anonymous access to BenReilly/all-the-characters.git denied.
> fatal: Authentication failed for 'https://github.com/BenReilly/all-the-characters.git/'
HTTPS?什么?
git remote -v
> origin https://github.com/BenReilly/all-the-characters.git (fetch)
> origin https://github.com/BenReilly/all-the-characters.git (push)
哦。
git remote set-url origin git@github.com:BenReilly/all-the-characters.git
git remote -v
> origin https://github.com/BenReilly/all-the-characters.git (fetch)
> origin https://github.com/BenReilly/all-the-characters.git (push)
这是因为它不在我的osxkeychain中吗?
请确保已完成ssh-add -K ~/.ssh/<key id>
并确保已定义~/.ssh/config
文件。行为无变化。我还验证了密钥在我的GitHub设置中。
我在MacOS Mojave(10.14.1)上,使用的是Git版本2.17.2。
为什么Git会强制使用HTTPS并忽略我设置SSH地址的尝试?
ETA .git/config
文件
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@github.com:BenReilly/all-the-characters.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
答案 0 :(得分:1)
Git配置具有一个insteadOf
option:
inboundMessage
任何以该值开头的URL都将改写为以
outboundMessage
开始。如果某些站点提供大量存储库,并通过多种访问方式为它们提供服务,而某些用户需要使用不同的访问方式,则此功能允许用户指定任何等效的URL,并让Git自动将URL重写为特定用户的最佳选择,即使是网站上前所未有的存储库。如果有多个notOfOf字符串与给定的URL匹配,则使用最长的匹配。
基本上,如果您运行类似
url.<base>.insteadOf
您将在全局Git配置(在类似Unix的计算机上为<base>
)上添加一个节,类似
git config --global url.https://.insteadOf git://
,这将导致Git自动将以~/.gitconfig
开头的任何远程转换为以[url "https://"]
insteadOf = git://
开头的远程。用git://
查看您的全局配置,看看是否有https://
条目。