我正在使用几个存储库,但最近我只是在内部工作,一切都很棒。
今天我不得不承诺并将代码推送到其他代码中,但我遇到了一些麻烦。
$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://gavekortet@appharbor.com/mitivo.git/info/refs?service=git-receive-pack
fatal: HTTP request failed
我无能为力,会再次输入密码。
如何重置系统上的凭据,以便Git会询问我该存储库的密码?
我试过了:
git config --global --unset core.askpass
为了取消设置密码
git config credential.helper 'cache --timeout=1'
以避免凭据缓存...
似乎没有任何作用;有没有人有更好的主意?
答案 0 :(得分:481)
Git凭证缓存运行一个守护程序进程,该进程将您的凭据缓存在内存中并按需将其移出。因此,如果你继续使用它作为cache.helper选项,那么杀死你的git-credential-cache-daemon进程会抛弃所有这些并导致你重新提示你输入密码。
您还可以使用git config --global --unset credential.helper
禁用Git凭据缓存的使用。然后重置它,您将继续拥有其他存储库(如果有)的缓存凭据。如果已在系统配置文件中设置了git config --system --unset credential.helper
,则可能还需要执行此操作(例如,Git for Windows 2)。
在Windows上,您可能最好使用管理器帮助程序(git config --global credential.helper manager
)。这会将您的凭据存储在Windows凭据存储中,该凭据存储具有控制面板界面,您可以在其中删除或编辑存储的凭据。使用此商店,您的详细信息将通过Windows登录进行保护,并且可以在多个会话中保留。 Git for Windows 2.x中包含的 manager 帮助已经取代了之前在Git for Windows 1.8.1.1中添加的 wincred 帮助程序。名为 winstore 的类似帮助程序也可在线获取,并与GitExtensions一起使用,因为它提供了更多GUI驱动的界面。 manager 帮助程序提供与 winstore 相同的GUI界面。
从详细说明Windows凭据存储面板的the Windows manual中提取:
单击“开始”按钮“开始”按钮的图片,再依次单击“控制面板”,“用户帐户和家庭安全”(如果已连接到网络域,则单击“用户帐户”),然后单击“用户帐户”,打开“用户帐户”。在左侧窗格中,单击“管理您的凭据。”
答案 1 :(得分:403)
如果Windows计算机出现此问题,请执行以下操作。
答案 2 :(得分:133)
重新输入:
$ git config credential.helper store
然后系统会提示您再次输入凭据。
警告强>
使用此帮助程序会将未加密的密码存储在磁盘上
答案 3 :(得分:63)
我遇到与OP相同的问题。它把我的旧Git凭据存储在系统的某个地方,我想用我的新凭据使用Git,所以我运行了命令
$ git config --system --list
显示
credential.helper=manager
每当我执行git push
时,它都会使用我长期设置的旧用户名,并且我想使用新的GitHub帐户来推送更改。我后来发现我的旧GitHub帐户凭据存储在
控制面板→用户帐户→凭据管理器→管理Windows凭据。
我刚刚删除了这些凭据,当我执行git push
时,它向我询问了我的GitHub凭据,它就像一个魅力。
答案 4 :(得分:39)
尝试使用以下命令。
git credential-manager
在这里,您可以获得管理凭据的各种选项(请查看以下屏幕)。
或者你甚至可以直接尝试这个命令:
git credential-manager uninstall
这将在每个服务器交互请求上再次开始提示输入密码。
答案 5 :(得分:27)
答案 6 :(得分:23)
我找到了对我有用的东西。当我向OP写评论时,我未能检查系统配置文件:
git config --system -l
显示
credential.helper=!github --credentials
线。我用
取消了它git config --system --unset credential.helper
现在忘记了凭据。
答案 7 :(得分:12)
git config --list
将显示credential.helper = manager
(这是在Windows机器上)
要为当前本地git文件夹禁用此缓存用户名/密码,只需输入
即可git config credential.helper ""
这样,git每次都会提示输入密码,忽略“经理”里面保存的内容。
答案 8 :(得分:12)
在带有" wincred" *的Windows 2003 Server中,没有其他答案对我有帮助。我不得不使用cmdkey
。
cmdkey /list
列出所有存储的凭据。cmdkey /delete:Target
删除凭据"目标"名称(* by" wincred"我的意思是git config --global credential.helper wincred
)
答案 9 :(得分:10)
需要使用相应的github username
和password
清除Windows中的用户名和密码
控制面板\用户帐户\凭据管理器
修改 Windows凭据
删除现有用户,现在转到命令提示符,编写push命令,显示github弹出窗口,输入username
/ email
和password
。
现在我们可以在切换用户后推送代码。
答案 10 :(得分:7)
从位于Windows当前登录用户文件夹中的.gitconfig文件中删除此行:
[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"
这对我有用,现在当我推送到遥控器时,它再次要求我输入密码。
答案 11 :(得分:7)
执行“ git pull”时出现相同的错误,这就是我的解决方法。
git config --system --unset credential.helper
git config --system --add credential.helper manager
git pull
答案 12 :(得分:6)
您可以从以下文件credential.helper=!github --credentials
中删除行C:\Program Files\Git\mingw64\etc\gitconfig
,以便删除git的凭据
答案 13 :(得分:6)
如果使用Git Credential Manager for Windows(当前版本通常会这样做):
git credential-manager clear
这是added mid-2016。要检查是否使用了凭据管理器:
git config --global credential.helper
→ manager
答案 14 :(得分:5)
在我的情况下,我找不到Windows Credential Manager(Windows 7)中保存的凭据。
我可以通过执行
来重置我的凭据git config --global credential.helper wincred
老实说,玛丽要看看它是否会消灭我的凭据,它实际上是有效的。
答案 15 :(得分:5)
C:\Users\<current-user>
.git-credentials
文件答案 16 :(得分:5)
在同一台计算机上使用多个Git帐户时,会出现此错误。
如果您使用的是macOS,则可以删除 github.com 的已保存凭据。
请按照以下步骤删除 github.com 凭据。
答案 17 :(得分:5)
如果您的凭据存储在凭据助手中(通常是这种情况),则删除特定主机的永久密码的便携式方法是致电git credential reject
:
一行:
$ echo "url=https://appharbor.com" | git credential reject
或以交互方式:
$ git credential reject
protocol=https
host=gitlab.com
username=me@example.com
↵
然后,要输入新密码,请输入git fetch
。
答案 18 :(得分:4)
您必须在Credential Manager中更新它。
转到“控制面板”&gt;用户帐户&gt;凭证管理器&gt; Windows凭据。您将在列表中看到Git凭据(例如git:https://)。单击它,更新密码,并从您的Git bash执行git pull / push命令,它不会再抛出任何错误消息。
答案 19 :(得分:3)
对于Windows 10,请转到以下路径,
控制面板\用户帐户\凭据管理器
此位置将有2个标签,
单击Windows凭据选项卡,在这里您可以看到存储的github凭据, 在“通用凭据”标题下。
您可以从此处删除这些证书,然后尝试重新克隆-因为我们刚刚从Windows 10系统中删除了存储的凭据,它将立即要求用户名/密码
答案 20 :(得分:3)
要添加到@ericbn的https://stackoverflow.com/a/41111629/579827中,请参阅以下示例命令,我已将这些命令嵌入到脚本中,并运行该脚本以在更新密码时更新所有密码。由于它很具体,可能无法原样使用,但它显示了cmdkey.exe
在现实生活中的用法。
⚠这是在 cygwin ⚠
中运行的 shell 脚本⚠之所以可行,是因为我使用了专用的git repos,它们都使用相同的密码进行身份验证(您可能不想使用相同的凭据进行循环,但是您可以重用此示例
/list
命令来提取列表已注册凭证的数量)⚠
entries=`cmdkey.exe /list: | grep git | sed -r -e 's/^[^:]+:\s*(.*)$/\1/gm'`
for entry in ${entries}
do
cmdkey.exe "/delete:${entry}"
cmdkey.exe "/generic:${entry}" "/user:${GIT_USERNAME}" "/pass:${GIT_PASSWORD}"
done
答案 21 :(得分:2)
在Windows 10 Professional上使用Windows的最新版git,我遇到了类似的问题,即我有两个不同的GitHub帐户和一个Bitbucket帐户,因此VS2017,git扩展和git bash有点混乱。
我首先检查了git如何使用此命令处理我的凭据(使用提升权限的命令运行git bash或出现错误):
git config --list
我找到了Credential Manager条目,因此我单击了“开始”按钮>,将Credential Manager键入,然后左键单击了启动应用程序的凭证管理器yell safe图标。然后,我单击Windows凭据选项卡,找到了我当前git帐户的条目,该条目恰好是Bitbucket,所以我删除了该帐户。
但是这并没有解决问题,因此下一步是取消凭据,我是在笔记本电脑上的存储库目录中执行此操作的,该目录包含我要推送到远程的GitHub项目。我输入了以下命令:
git config --system --unset credential.helper
然后我进行了git push,然后提示我输入我输入的GitHub用户名(我需要的正确用户名),然后关联的密码和所有内容都正确推送了。
我不确定这会带来多大的影响,大多数人可能都只使用一个仓库,但我必须跨多个仓库并使用不同的提供程序,以便可能再次遇到此问题。
答案 22 :(得分:1)
这种方法对我有用,应该与OS无关。它有点笨拙,但是很快,可以让我重新输入凭据。
只需找到要为其重新输入凭据的远程别名。
$ git remote -v
origin https://bitbucket.org/org/~username/your-project.git (fetch)
origin https://bitbucket.org/org/~username/your-project.git (push)
复制项目路径(https://bitbucket.org/org/~username/your-project.git
)
然后删除遥控器
$ git remote remove origin
然后将其重新添加
$ git remote add origin https://bitbucket.org/org/~username/your-project.git
答案 23 :(得分:1)
如果您希望git忘记保存的旧凭据并重新输入用户名和密码,则可以使用以下命令进行操作:
git credential-cache exit
运行上述命令后,如果您尝试按任何命令,它将提供输入用户名和密码的选项。
答案 24 :(得分:1)
原始问题摘要
尽管标题中显示“删除凭据”,但该描述使我假设您可能在GitHub上拥有多个帐户,例如与工作有关的项目还是与私人项目有关的项目。 (至少那个问题使我找到了这个主题。) 如果是这样,请继续阅读,否则可以忽略答案,但有时可能会派上用场。
原因
git附带的Microsoft Git-Credential-Manager(简称GCM)默认情况下按主机存储凭据。可以通过检查Windows凭据管理器来验证这一点(请参见其他答案,以英语,法语和德语Windows版本访问它)。 因此,默认情况下无法在同一主机(此处为github.com)上使用多个帐户。
解决方案
Configure GCM包括每个凭证条目的其他信息。 我建议包括HTTP(S)[存储库]路径,以便能够为每个存储库使用单独的帐户。
对于所有可能的主机:
git config --global credential.useHttpPath true
仅适用于github.com:
git config --global credential.github.com.useHttpPath true
看看GCM文档,也许您想指定一些不同的内容。
答案 25 :(得分:0)
在您的项目根文件夹中打开 .git / config 。该文件包含有关远程URL和您的凭据类型的详细信息。
您在此文件中当前的远程URL可能正在存储凭据。从github复制远程URL并更新此配置文件中的URL。
像下面这样:
[remote "origin"]
url = [update it]
fetch = +refs/heads/*:refs/remotes/origin/*
[credential]
helper = manager
现在,当您尝试推送代码时,它将要求提供凭据。谢谢
答案 26 :(得分:0)
Mac 设备的答案:
前往
Applications/Utilities/Keychain Acccess
搜索 git.credentials
,然后删除所需 URL 的 git 凭据。
答案 27 :(得分:0)
在上述任何方法都无法满足您的情况时,请尝试此操作。
git config credential.helper 'cache --timeout=30'
这将每3秒删除一次缓存,并询问用户名和密码。您可以使用增加的超时值重新运行该命令。
答案 28 :(得分:0)
要清除Windows缓存的Git凭据管理器,请执行以下操作:
rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache
或
rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache
答案 29 :(得分:0)
根据@patthoyts的最高评价(https://stackoverflow.com/a/15382950/4401322)构建:
他的答案使用但不解释“本地”配置,“全局”配置和“系统”配置。它们的官方git文档是here,值得一读。
例如,我在Linux上,并且不使用 system 配置,因此我从不使用--system
标志,但通常需要区分{{1 }}和--local
配置。
我的用例是我有两个Github凭证;一个工作,一个娱乐。
这是我处理问题的方法:
--global
还值得注意的是,有一些方法可以完全避免此问题,例如,您可以将$ cd work
# do and commit work
$ git push origin develop
# Possibly prompted for credentials if I haven't configured my remotes to automate that.
# We're assuming that now I've stored my "work" credentials with git's credential helper.
$ cd ~/play
# do and commit play
$ git push origin develop
remote: Permission to whilei/specs.git denied to whilei.
fatal: unable to access 'https://github.com/workname/specs.git/': The requested URL returned error: 403
# So here's where it goes down:
$ git config --list | grep cred
credential.helper=store # One of these is for _local_
credential.helper=store # And one is for _global_
$ git config --global --unset credential.helper
$ git config --list | grep cred
credential.helper=store # My _local_ config still specifies 'store'
$ git config --unset credential.helper
$ git push origin develop
Username for 'https://github.com': whilei
Password for 'https://whilei@github.com':
Counting objects: 3, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 1.10 KiB | 1.10 MiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/whilei/specs.git
b2ca528..f64f065 master -> master
# Now let's turn credential-helping back on:
$ git config --global credential.helper "store"
$ git config credential.helper "store"
$ git config --list | grep cred
credential.helper=store # Put it back the way it was.
credential.helper=store
与关联的SSH密钥用于Github(一个用于工作,一个用于娱乐)并相应地自定义命名远程主机也可以解决身份验证上下文问题。
答案 30 :(得分:0)
对于macOS用户:
在同一台计算机上使用多个Git帐户时,会出现此错误。
请按照以下步骤删除github.com凭据。
选择github.com,然后右键单击它
删除“ github.com”
再试一次将其推入或拉入git,它将要求提供凭据。 输入存储库帐户的有效凭证。 完成
答案 31 :(得分:0)
正如以上每个人所提到的,这是一个Git Credential Manager
问题。
由于权限的原因,我无法修改我的凭证或操纵凭证管理器。
我也负担不起在PC上以纯文本形式设置密码。
一种解决方法是删除intellij
中的远程分支,然后重新添加该远程分支。这将删除存储的凭证,并强制刷新凭证。
答案 32 :(得分:0)
对我来说,最终解决此问题的方法是使用GitHub桌面,转到存储库设置,然后从存储库URL中删除user:pass @。然后,我尝试从命令行进行推送,并被提示输入登录凭据。我把这些放进去之后,一切恢复了正常。 Visual Studio和命令行都可以使用,当然GitHub桌面也可以使用。
GitHub Desktop->存储库->存储库设置->“远程”选项卡
从以下位置更改主远程存储库(来源)
:https://pork@muffins@github.com/MyProject/MyProject.git
收件人:
https://github.com/MyProject/MyProject.git
点击“保存”
凭据将被清除。
答案 33 :(得分:0)
在我们的案例中,清除用户的.git-credentials文件中的密码对我们有用。
indexer=StringIndexer(inputCol="classname",outputCol="ClassCategory")
答案 34 :(得分:-1)
在Windows上,至少git remote show [remote-name]
可以运行,例如
git remote show origin
答案 35 :(得分:-1)
如果您使用密钥对进行身份验证,则可以删除或移动私钥,或停止密钥代理并尝试使用。