【问题标题】:How to force git to prompt me for username + password on clone request如何强制 git 在克隆请求时提示我输入用户名 + 密码
【发布时间】:2020-09-24 22:52:03
【问题描述】:

我正在加入一个新团队,并在 GitHub 中成为他们组织的成员,这(至少在 Web UI 中)使我可以完全读取他们的存储库。所以我尝试在本地克隆一个 repo:

  1. 我去 GitHub 中的 repo 并点击“克隆或下载”链接并选择“Clone with HTTPS”(这是我想要的)
  2. 我将克隆 URL 复制到剪贴板
  3. 我从终端运行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

我重新启动终端并再次尝试相同的克隆...但没有骰子。

【问题讨论】:

标签: git macos github


【解决方案1】:

在 URL 中传递用户名:

git clone https://username@github.com/<THEIR_ORG>/<THEIR_REPO>.git

【讨论】:

  • 那行得通!!!!有没有机会我可以如此大胆地要求解释为什么 git 没有提示我输入用户名?!非常感谢!
  • GitHub 在您未经授权时返回 404(未找到),因此您无法尝试查找私有存储库(我认为这就是原因)。它不会返回 401(未授权),这会告诉 git 要求提供凭据。
猜你喜欢
  • 1970-01-01
  • 2014-07-30
  • 2015-11-26
  • 1970-01-01
  • 2018-03-31
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 2019-03-07
相关资源
最近更新 更多