git: 'credential-cache' 不是一个 git 命令。

331

我完全按照这些说明的步骤操作,包括密码缓存部分。但每次执行git push origin master时都会出现以下错误:

git: 'credential-cache' is not a git command. See 'get --help'.

我必须输入用户名和密码,此时会出现与之前相同的错误信息,随后显示git push的输出。

以下是我的.gitconfig文件的内容:

[user]
    name = myusername
    email = myusername@myemaildomain.com
[credential]
    helper = cache

明确一点,我安装了Git并运行了Git Bash之后,我确切地输入了以下内容:

git config --global user.name "myusername"
git config --global user.email "myusername@myemaildomain.com"
git config --global credential.helper cache

请帮忙。这太令人沮丧了!


81
要删除消息:"git: 'credential-cache' is not a git command.",请运行命令 "git config --global --unset credential.helper" ,然后按照下面的说明操作。 - Wallace Kelly
7
谢谢您的指令,@Wally。只有在删除“--global”后,您的命令才能对我起作用。 - Web_Designer
可能是使用https://github时是否有跳过密码输入的方法的重复问题。 - Michael Freidgeim
1
您可以手动修改.git/config文件(即删除[credential]下面的行)来删除此消息。 - tarikakyol
1
对于那些阅读下面各种Windows建议的人来说,值得一提的是,git config credential.helper cache确实可以在Cygwin git版本2.13.2中使用。 - Flash Sheridan
显示剩余2条评论
22个回答

378

以下内容摘自某篇博客

git-credential-cache 无法在 Windows 系统中使用,因为它通过 Unix 套接字进行通信。

Git for Windows

由于 msysgit 已被 Git for Windows 取代,使用 Git for Windows 是最简单的选择。一些版本的 Git for Windows 安装程序 (例如 2.7.4) 在安装过程中有一个复选框,可以启用 Git 凭证管理器。下面是一个截图:

Git For Windows 2.7.4 安装向导的截图

仍在使用 msysgit?对于 msysgit 版本 1.8.1 及以上

在 msysgit 1.8.1 中添加了 wincred 辅助工具,用法如下:

git config --global credential.helper wincred

对于msysgit版本早于1.8.1的用户

首先,下载git-credential-winstore并将其安装在你的git二进制文件目录下。

接下来,请确保包含git.cmd的目录已经添加到你的Path环境变量中。64位系统默认目录是C:\Program Files (x86)\Git\cmd,而32位系统则为C:\Program Files\Git\cmd。测试这个设置是否正确的简单方法是打开命令提示符并输入git。如果没有列出git命令列表,则说明没有正确设置。

最后,在命令提示符中键入:

git config --global credential.helper winstore

或者您可以手动编辑 .gitconfig 文件:

[credential]
    helper = winstore

完成这一步后,你可以通过 Windows 凭据管理器来管理你的 Git 凭据。你可以通过 Windows 控制面板调用它。


5
http://gitcredentialstore.codeplex.com/ 包含常见问题解答。它帮助我成功安装了winstore。除非你从git-bash中运行它,否则二进制文件会崩溃。 - ruruskyi
9
FYI,我必须使用明确的管理员权限进行安装。否则,我会收到错误信息“git: 'credential-winstore' 不是 git 命令,请参阅 'git --help'”。我的 .gitconfig 文件现在看起来有所不同,[credential] 行有 "helper = !'C:\Users\Malachi\AppData\Roaming\GitCredStore\git-credential-winstore.exe'"。 - Malachi
1
他们在多平台应用程序中使用Unix套接字的原因是什么?如果是这样,为什么git-credential-winstore不会默认随Windows版本的Git一起发布? - Domi
3
git-credential-winstore 工具对我来说无法使用。它以前可以用,但突然间到处都会弹出提示框。我已经检查了 .git-config 和 Windows 凭据管理器,所有应该有的信息都在那里。但工具就是不起作用,我真的完全不知道为什么。 :( - Chris McKenzie
1
在这种情况下,我相信你只需要在命令行中执行 git config --global credential.helper wincred 命令。(当然这取决于你安装的git版本。) - Nate Cook
显示剩余8条评论

88

请注意,这不像内存缓存那样安全。此外,“wincred”选项已过时。 - Xaser
2
这个问题在7年前已经得到了回答。不确定msysgit的当前状态如何。 - A T

37
  1. 运行git config --global credential.helper wincred
  2. 转到:控制面板\凭据管理器\Windows 凭据\通用凭据
  3. Internet 或网络地址:中添加凭据 git:https://{用户名}.github.com
    用户: {名称}
    密码: {密码}

2
凭据管理器位于Windows 7的用户帐户和家庭安全中。 - Casey Murray
1
谢谢!我花了一个小时才找到如何修复我的Windows凭据管理器,因为我更改了域密码。天哪,真是个迷宫。 - SadBunny
3
在控制台中输入“%windir%\explorer.exe shell:::{1206F5F1-0569-412C-8FEC-3204630DFB70}”将启动凭据管理器。 - Jeroen Wiert Pluimers
1
谢谢,我的问题已经解决 :) - Diallo
Azure git repo 怎么样?我只有克隆 URL,格式为 https://<user>@dev.azure.com/<my-org>/<azure-project>/_git/<repo-name>。当我将其输入作为互联网或网址时,它是无效的。 - Jay
我已经弄清楚了^^。在Azure repos的情况下,我们可以使用HTTPS或SSH连接。我必须将git://<org-name>@dev.azure.com/<org-name>配置为Internet地址,org-name作为用户名,PAT token作为密码。然后,我必须执行$ git config --global credential.helper wincred来设置正确的凭据助手。 - Jay

29

我在windows7上使用Aptana Studio 3时遇到了这个问题。 这里 对我有帮助:

git config --global credential.helper wincred

26

对于 git 版本 >=1.7.10(使用 git --version 检查),请使用以下方法(来自参考资料):

Windows:

git config --global credential.helper wincred

苹果电脑:

git config --global credential.helper osxkeychain

在Mac上,执行git config --global credential.helper osxkeychain命令。 - Ekaba Bisong
Linux怎么样? - andreagalle

18

类似的错误是'credential-wincred'不是git命令

现在已经过时的是被接受和流行的答案...

wincred用于项目git-credential-winstore,该项目不再维护

它被由微软开源维护的Git-Credential-Manager-for-Windows替代。

从上面的链接下载zip文件并提取内容到

\cygwin\usr\libexec\git-core

(或者作为占位符)\cygwin64\usr\libexec\git-core

然后启用它(通过设置全局 .gitconfig)- 执行:

git config --global credential.helper manager

如何使用

无需进一步配置。

当需要凭据时,它将[自动]工作。

例如,在推送到Azure DevOps时,它会打开一个窗口并初始化oauth2流程以获取您的令牌。

参考:


这对我有用,但是我不得不添加--replace-all,因为我的配置中有多个credential.helper条目。 - Tony Hopkinson

11

我通过从特定项目的配置中删除credential部分来解决了这个问题:

  • 只需输入:git config -e
  • 在编辑器内,我删除了整个部分[credential] helper = cache

这样就移除了烦人的消息:

git: 'credential-cache' 不是 git 命令。参见 'git --help'。


2
我尝试了许多以上的解决方案,但只有这个有效。我只是进入了我的.git文件夹,打开了config文件并删除了[credential] helper = global(我不小心将其设置为“global”)。非常感谢Pini Cheyni。 - Filip Savic
这确实是更简单的方法。顺便说一下,如果找不到“helper”,可以添加“--global”。您还可以将“cache”更改为“manager”,这是“helper”的默认值。 - Han

11

这对我有用:

git credential-manager-core configure

您的答案可以通过提供更多支持信息来改进。请[编辑]以添加进一步细节,例如引用或文档,以便他人可以确认您的答案是否正确。您可以在帮助中心中找到有关编写好答案的更多信息。 - Community

10

这就是我一直在寻找的答案。微软已经开始维护这个项目。它将密码存储在Windows凭据存储中。 - Gordolio

8

当我尝试从主分支使用命令“git pull”时,我也遇到了类似的错误。

Error: "git: 'credential-manager' is not a git command. See 'git --help'." 

我执行了以下两个命令,问题得到了解决。
$ git config --global --unset credential.helper
$ git config credential.helper store

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接