将多个 git 个人访问令牌 (PAT) 与凭据管理器一起使用
Using multiple git personal access tokens (PAT) with Credential Manager
我正在使用 GitCredentialManager as per ,但我找不到如何使用多个个人访问令牌 (PAT) 的方法。
我有
Windows terminal
要点位于 https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d
dotvim
回购 https://github.com/lkeersmaekers/dotvim
我创造了
Windows terminal
要点的 PAT (创建要点范围)
dotvim
存储库的 PAT (访问 public 存储库范围)
第一次推送 Windows terminal
要点时,git 按预期请求 username/password(=PAT),推送成功,我可以在 Windows 凭据管理器。
此后推送 dotvim
存储库时使用来自 Windows terminal
的存储凭据 (PAT),并且 dotvim
推送失败。
我不确定这里的最佳做法是什么。
- 我可以创建具有足够访问权限的一个 PAT,而不是两个 PAT,但那样的话,我可能会得到一个所有复选框都被选中的 PAT,这看起来完全错了。
- 我不知道如何在 Windows 凭据管理器中拥有两个凭据,以允许
git push
以某种方式使用正确的凭据。
您可以在此处采用几种不同的方法。一种是创建具有 gist
和 repo
范围的单个标记并普遍使用它。该令牌确实可以访问您的所有存储库,但如果您使用的是凭据帮助程序,那么它会以加密方式存储并且风险不会太大。
由于您实际上在此处使用了两个不同的域(github.com
和 gist.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 的凭据助手将为这些假用户名存储单独的凭据,并将使用相应的令牌。
我正在使用 GitCredentialManager as per
我有
Windows terminal
要点位于 https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49ddotvim
回购 https://github.com/lkeersmaekers/dotvim
我创造了
Windows terminal
要点的 PAT (创建要点范围)dotvim
存储库的 PAT (访问 public 存储库范围)
第一次推送 Windows terminal
要点时,git 按预期请求 username/password(=PAT),推送成功,我可以在 Windows 凭据管理器。
此后推送 dotvim
存储库时使用来自 Windows terminal
的存储凭据 (PAT),并且 dotvim
推送失败。
我不确定这里的最佳做法是什么。
- 我可以创建具有足够访问权限的一个 PAT,而不是两个 PAT,但那样的话,我可能会得到一个所有复选框都被选中的 PAT,这看起来完全错了。
- 我不知道如何在 Windows 凭据管理器中拥有两个凭据,以允许
git push
以某种方式使用正确的凭据。
您可以在此处采用几种不同的方法。一种是创建具有 gist
和 repo
范围的单个标记并普遍使用它。该令牌确实可以访问您的所有存储库,但如果您使用的是凭据帮助程序,那么它会以加密方式存储并且风险不会太大。
由于您实际上在此处使用了两个不同的域(github.com
和 gist.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 的凭据助手将为这些假用户名存储单独的凭据,并将使用相应的令牌。