将 git credentialmanager 与 github 令牌一起用于 gists

Posted

技术标签:

【中文标题】将 git credentialmanager 与 github 令牌一起用于 gists【英文标题】:Using git credentialmanager with github tokens for gists 【发布时间】:2022-01-21 04:56:00 【问题描述】:

我正在尝试将我的要点推送到 github 并尝试按照 this answer 使用凭据管理器以正确的方式进行操作

我认为遵循简单的工作流程就足够了

克隆一个要点 推送会询问凭据(用户名/令牌)

不幸的是,它要么没那么简单,要么我在其他地方搞砸了。我得到的只是remote: Repository not found.


复制我的要点

C:\Users\lieve\AppData\Local\Temp>git clone https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d
Cloning into '4884d047b3b90ccd697a4d7ec21be49d'...
remote: Enumerating objects: 9, done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 9
Receiving objects: 100% (9/9), done.
Resolving deltas: 100% (2/2), done.

显示遥控器

C:\Users\lieve\AppData\Local\Temp>cd 4884d047b3b90ccd697a4d7ec21be49d
C:\Users\lieve\AppData\Local\Temp\4884d047b3b90ccd697a4d7ec21be49d>git remote -v
origin  https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d (fetch)
origin  https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d (push)

尝试推送失败且不询问任何凭据

C:\Users\lieve\AppData\Local\Temp\4884d047b3b90ccd697a4d7ec21be49d>git push
remote: Repository not found.
fatal: repository 'https://gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d/' not found

凭据管理器诊断 C:\Users\lieve\AppData\Local\Temp\4884d047b3b90ccd697a4d7ec21be49d>git credential-manager-core 诊断 正在运行诊断...

 [ OK ] Environment
 [ OK ] File system
 [ OK ] Networking
 [ OK ] Git
 [ OK ] Credential storage
 [ OK ] Microsoft authentication (AAD/MSA)
 [ OK ] GitHub API

Diagnostic summary: 7 passed, 0 skipped, 0 failed.

我可以通过将遥控器更改为 https://<token>@gist.github.com/lkeersmaekers/4884d047b3b90ccd697a4d7ec21be49d 来推动工作,但这正是凭据管理器应该处理的事情吗?

【问题讨论】:

【参考方案1】:

Git Credential Manager (GCM)(以前的 GCM-core,最近更名为 GCM)依赖于 Windows Credential Manager。

打开上述 Windows 凭据管理器并检查是否有任何 github.com 条目,其中可能包含错误密码(例如您的实际密码而不是令牌)。

删除该条目,下一个git push 会询问您的凭据(然后使用令牌作为密码)。

【讨论】:

谢谢您,删除现有的 github 凭据有效。推送要求提供凭据(对话框中提供的选项对我来说根本不直观......通过取消对话框使其工作,因此 cli 询问用户名/密码(令牌)。 我现在在 credman 中有一个用户/令牌用于那个要点。似乎我现在拥有的所有其他存储库在推送(和失败)时都使用该凭证。这意味着我在为每个回购创建 PAT 时完全错了?每个用户/机器只能有一个 PAT 吗? @Lie 一个 PAT,带有范围 repo,应该足够了。

以上是关于将 git credentialmanager 与 github 令牌一起用于 gists的主要内容,如果未能解决你的问题,请参考以下文章

将 Git 与 Ant 集成的最佳方式?

不能将 `git mergetool` 与 `git am` 或 `git apply` 或 `patch` 一起使用

[Git] 将本地分支与远程分支关联

Git:将完整回购与另一个合并[重复]

Git 因致命错误而失败。拒绝将不相关的历史与 git push 合并?

Git与GitHub入门基础