【发布时间】:2020-09-24 22:52:03
【问题描述】:
我正在加入一个新团队,并在 GitHub 中成为他们组织的成员,这(至少在 Web UI 中)使我可以完全读取他们的存储库。所以我尝试在本地克隆一个 repo:
- 我去 GitHub 中的 repo 并点击“克隆或下载”链接并选择“Clone with HTTPS”(这是我想要的)
- 我将克隆 URL 复制到剪贴板
- 我从终端运行
git clone https://github.com/<THEIR_ORG>/<THEIR_REPO>.git(那里的克隆 URL 是从我的剪贴板粘贴的,我已经多次验证它是正确的)。这是我看到的:
$ git clone https://github.com/<THEIR_ORG>/<THEIR_REPO>.git
Cloning into '<THEIR_REPO>'...
remote: Repository not found.
fatal: repository 'https://github.com/<THEIR_ORG>/<THEIR_REPO>.git/' not found
这是组织下的私人回购。奇怪的是它甚至没有提示我输入用户名或密码,这向我表明不知何故我已将本地 git 配置为自动发送与有效 org/repo 用户名不匹配的用户名所以它自动让我失望了。
我有几个 GitHub 帐户(用于工作和娱乐),过去几年我都使用这台笔记本电脑。
所以我问:为什么 git 不提示我输入用户名/密码?我怎样才能强制它提示我?
为了记录,我检查了我的~/.gitconfig 文件,内容是:
[core]
excludesfile = /Users/myuser/.gitignore_global
[difftool "sourcetree"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
path =
[mergetool "sourcetree"]
cmd = /Applications/Sourcetree.app/Contents/Resources/opendiff-w.sh \"$LOCAL\" \"$REMOTE\" -ancestor \"$BASE\" -merge \"$MERGED\"
trustExitCode = true
[user]
name = My Name
email = <MY_WORK_EMAIL_ASSOCIATED_WITH_THE_CORRECT_GH_ACCOUNT>
username = <MY_WORK_USERNAME_ASSOCIATED_WITH_THE_SAME_GH_ACCOUNT>
signingkey = <MY_GPG_SIGNING_KEY>
[commit]
template = /Users/myuser/.stCommitMsg
gpgsign = true
我还必须为此组织启用 2FA,但我已经生成了我的个人访问令牌并将使用(一旦提示这样做)作为密码,而不是我的正常 GH 密码。
我认为我需要做的就是强制 git 提示我输入凭据,然后我可以发送它们并完成克隆请求。
更新
我在想 OSX Keychain 凭证助手可能是这里的一个因素,所以我尝试运行:
$ git credential-osxkeychain
usage: git credential-osxkeychain <get|store|erase>
然后我运行以下命令(禁用帮助程序):
$ git config --local --unset credential.helper
fatal: --local can only be used inside a git repository
$ git config --global --unset credential.helper
$ git config --system --unset credential.helper
error: could not lock config file /etc/gitconfig: Permission denied
$ sudo git config --system --unset credential.helper
我重新启动终端并再次尝试相同的克隆...但没有骰子。
【问题讨论】:
-
另外值得注意的是,GitHub 鼓励使用令牌。见here