Linux - 如何删除Git凭据

Max*_* Li 23 linux git credentials

我跑了

git config credential.helper store

跑了

git push origin master

我输入凭据的地方,他们得救了.

我读到它们是以纯文本形式存储的,所以现在我想删除我的凭据,保存并默认输入.

我怎样才能做到这一点?

小智 48

在终端中运行以下命令以删除存储在缓存中的凭据

git config --global --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

  • 这并没有清除商店......它只是让你根本不使用商店。您每次都必须输入您的信用信息 (5认同)
  • 这就是答案. (3认同)
  • 运行此命令后,我的凭据仍存储在〜/ .git-credentials中。(Ubuntu 18.04,git版本2.17.1)因此,在@torek的答案中,您也应该删除此文件。 (3认同)
  • 这不是答案 (3认同)
  • 由于某种原因,我的凭据仍然完好无损,并且我仍然能够推/拉所有存储库。有什么想法吗? (2认同)

小智 14

对我来说,所有选项都不起作用,我只是.git/在我的存储库中编辑了文件“config”。

cd .git/

nano config
Run Code Online (Sandbox Code Playgroud)

搜索[remote "origin"]并编辑上面:

url=YOUR REPOSITORY URL(有或没有用户并像这样传递username:password@gitlab.com/username/repository.git

保存并尝试推送您的存储库

  • 还可以使用 `git config --local remote.origin.url https://github.com/username/repository.git` (2认同)

tor*_*rek 12

您的凭据存储在git credential-store您(或它)运行命令时指定的文件中(或使用的文件),如文档中所述.默认是$HOME/.git-credentials.您应该能够在编辑器中打开此文件并对其进行编辑,或者只是将其完全删除.

请注意,您可能还需要更改凭据帮助程序,以便不再存储这些凭据.见git credential-cache文件为好,例如.


Atc*_*ava 12

如果您希望守护进程提前退出,在超时之前忘记所有缓存的凭据,您可以发出退出操作,运行以下命令。

git 凭证缓存退出

  • 对于因旧令牌过期而希望重新输入个人访问令牌 (PAT) 的任何人:请使用此方法。这只会要求您提供一次 PAT(至少在您输入正确的密码之前),然后将为您保存它。它不会关闭密码缓存,这可能正是您想要的。 (2认同)

Kar*_*nan 9

由于他没有将任何标志设置为globallocalsystem,因此默认情况下它将采用local ,因此正确的方法是移至相应的文件夹(存储库)并键入此命令

git config --local --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

要么

git config --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

参考:https : //www.atlassian.com/git/tutorials/setting-up-a-repository/git-config


Thi*_*imm 9

如果您使用的是 Windows 10,操作系统中有一个凭据管理器。

转到“开始”菜单,输入“Credential Manager”,然后在该管理器中选择“Windows Credentials”,找到“git:https://github.com”,展开它,然后您会在其中找到“Delete”。

在此输入图像描述


way*_*iki 7

对于 Linux 用户:

我在尝试从密码身份验证切换到 PAT(个人访问令牌)时遇到了这个问题。

我使用 https 来使用 Github。Github建议(在撰写此答案时)只需输入我的 PAT 而不是我的密码即可完成切换。然而,我遇到的问题是我的密码被缓存了,所以我从来不需要输入它

来源:https://docs.github.com/en/github/authentication-to-github/keeping-your-account-and-data-secure/creating-a-personal-access-token

因此,我必须查找缓存/存储的密码才能将其删除,以便在出现提示时输入我的 PAT 而不是密码。

我在以下文件中找到了密码:

/home/MyUsername/.gitconfig
Run Code Online (Sandbox Code Playgroud)

我删除了该文件,并在下次粘贴 PAT 而不是我的密码。

Github 建议使用他们的 Git Credential Manager Core (GCM Core) 来存储凭证(来源:https://docs.github.com/en/get-started/getting-started-with-git/caching-your-github-credentials-在-git 中)。我也安装了这个,并且 PAT 凭据现在存储在不同的位置:

/home/MyUsername/.gcm(这是一个文件夹)

我更详细地写了这个答案,也许有点题外话,因为从 2 天(2021 年 8 月 13 日)开始,密码身份验证将不再可能,我想一些用户可能很难找到他们缓存的密码。

TL;DR 寻找:

/home/MyUsername/.gitconfig
Run Code Online (Sandbox Code Playgroud)


vk5*_*5tu 7

如果您只想删除一个缓存的凭据,则可以在任何操作系统中通过从 Git 命令行驱动 Git 凭据助手 API 来完成此操作:

假设 Git 存储库是 git.example.com 并且您使用 HTTPS 进行连接。在操作系统命令提示符处输入 Git 命令:

git credential reject
Run Code Online (Sandbox Code Playgroud)

您现在位于凭证 API 拒绝功能的命令行上。键入以下行:

protocol=https
host=git.example.com
Run Code Online (Sandbox Code Playgroud)

在下一行中,使用操作系统的“stdin 结束”按键关闭命令。通常对于 Linux 和 Macos 是 Ctrl-D,对于 Windows 可能是 Ctrl-Z。

该凭证现已从凭证存储中删除。由于我们使用 Git 的凭证 API 进行删除,因此后端使用哪个实现该 API 的凭证存储并不重要。

在使用上述命令之前,请勿更改 Git 的 user.email 或 credential.helper 配置。以用于连接远程 Git 存储库的用户 ID 身份(而不是超级用户身份)运行命令。


小智 7

通用且简单的解决方案:

echo "url=https://github.com" | git credential reject
Run Code Online (Sandbox Code Playgroud)

这会取消 GitHub 上的授权。


Kis*_*n B 6

以上都不适合我。我使用的是 Mac,我必须做的是从钥匙串应用程序中手动删除我的凭据

脚步

  • 确保 credential.helper 是 osxkeychain
$ git config --global credential.helper
osxkeychain
Run Code Online (Sandbox Code Playgroud)
  • 打开钥匙串应用程序

  • 通过选择(所有项目)搜索凭证(例如使用用户名) 钥匙链访问

  • 按删除键 删除条目

  • 运行 git 命令(推、拉等)。这应该会提示您输入新密码


jua*_*aza 5

对我来说 unset 命令不起作用,而是我删除了文件:

rm ~/.git-credentials
Run Code Online (Sandbox Code Playgroud)

  • 这也是我所需要的。为我工作。谢谢 (2认同)
  • 同样在这里。我只做:“git config --global --unset credential.helper”是行不通的。谢谢! (2认同)