将多个 git 个人访问令牌 (PAT) 与凭据管理器一起使用

Using multiple git personal access tokens (PAT) with Credential Manager

我正在使用 GitCredentialManager as per ,但我找不到如何使用多个个人访问令牌 (PAT) 的方法。

我有

  1. Windows terminal 要点位于 https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d
  2. dotvim 回购 https://github.com/lkeersmaekers/dotvim

我创造了

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

第一次推送 Windows terminal 要点时,git 按预期请求 username/password(=PAT),推送成功,我可以在 Windows 凭据管理器。

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

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

您可以在此处采用几种不同的方法。一种是创建具有 gistrepo 范围的单个标记并普遍使用它。该令牌确实可以访问您的所有存储库,但如果您使用的是凭据帮助程序,那么它会以加密方式存储并且风险不会太大。

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

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

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