1

我正在按照这个答案使用GitCredentialManager ,但我找不到如何使用多个个人访问令牌 (PAT) 的方法。

我有

  1. https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49dWindows terminal要点
  2. https://github.com/lkeersmaekers/dotvim上的一个dotvim仓库

我建立

  1. 要点的 PAT (创建Windows terminal要点范围)
  2. dotvim回购的 PAT (访问公共存储库范围)

第一次推送Windows terminal要点时,git 按预期要求输入用户名/密码(=PAT),推送成功,我可以在 Windows 凭据管理器中看到凭据。

但是,在此后推送dotvim存储库时,会使用存储Windows terminal的凭据 (PAT),并且dotvim推送失败。

我不确定这里的最佳做法是什么。

  • 我可以创建一个具有足够访问权限的 PAT,而不是两个 PAT,但这样一来,我最终可能会得到一个 PAT,其中所有复选框都被选中,这似乎完全错误。
  • 我不知道如何在 Windows 凭据管理器中拥有两个凭据,以便git push以某种方式使用正确的凭据。
4

1 回答 1

1

您可以在这里采取几种不同的方法。gist一种是使用and范围创建单个令牌repo并普遍使用它。该令牌确实可以访问您的所有存储库,但如果您使用凭证助手,那么它会以加密方式存储,并且风险不会太大。

由于您实际上在这里使用了两个不同的域 (github.comgist.github.com),因此您可以毫无问题地使用单独的令牌。令牌存储在域的范围内,因此这里没有冲突。只需在其各自的域上使用每个凭据。

如果要对不同的存储库使用不同的令牌,可以通过设置credential.usehttppath为 true 来实现。这也可以限定为特定的 URL 模式(包括通配符),以便它仅适用于 GitHub(例如,使用git config --global credential.https://github.com/.usehttppath true. 每个存储库将拥有自己的一组凭据,并且您可以存储任意数量的令牌。如果您有很多存储库,但这可能会很快变得不方便。

最后,如果您只想为公共和私人访问使用不同的令牌,您可以利用 GitHub 在您使用令牌时忽略用户名这一事实为 GitHub 执行此操作。因此,您可以通过public@在主机名前添加一个来克隆公共存储库(例如,私有存储库的 https://public@github.com/git/git.git private@`。Git) and then using 的凭证助手将为这些假用户名和将使用相应的令牌。

于 2021-12-20T01:13:46.717 回答