我正在使用几个存储库,但最近我只是在内部工作,一切都很棒。
今天我不得不承诺并将代码推送到其他代码中,但我遇到了一些麻烦。
$ git push appharbor master
error: The requested URL returned error: 403 while accessing https://[email protected]/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'
为了避免凭证缓存......
似乎没有任何作用;有没有人有更好的主意?
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中包含的管理器帮助程序已经取代了之前在Windows 1.8.1.1的Git中添加的wincred帮助程序。一个名为winstore的类似帮助程序也可以在线获得,并与GitExtensions一起使用,因为它提供了更多GUI驱动的界面。经理助手提供与winstore相同的GUI界面。
从the Windows manual中摘录详细说明Windows凭据存储面板:
通过单击“开始”按钮,“开始”按钮的图片,“控制面板”,“用户帐户和家庭安全”(或单击“用户帐户”,如果已连接到网络域),然后单击“用户帐户”,打开“用户帐户”。在左窗格中,单击“管理您的凭据”。
需要使用相应的github username
和password
登录
清除Windows中的用户名和密码
控制面板\用户帐户\凭据管理器
编辑窗口凭据
删除现有用户,现在转到命令提示符,写入push命令,显示一个github弹出窗口,输入username
/ email
和password
。
现在我们可以在切换用户后推送代码。
从位于Windows当前登录用户文件夹中的.gitconfig文件中删除此行:
[credential]
helper = !\"C:/Program Files (x86)/GitExtensions/GitCredentialWinStore/git-credential-winstore.exe\"
这对我有用,现在当我推送到远程它再次要求我的密码。
如果使用Git Credential Manager for Windows(当前版本通常这样做):
git credential-manager clear
这是added mid-2016。要检查是否使用了凭据管理器:
git config --global credential.helper
→ manager
做'git pull'时得到同样的错误,这就是我修复它的方法。
git config --system --unset credential.helper
git config --system --add credential.helper manager
git pull
您可以从以下文件credential.helper=!github --credentials
中删除行C:\Program Files\Git\mingw64\etc\gitconfig
以删除git的凭据
在我的情况下,我找不到Windows凭据管理器(Windows 7)中保存的凭据。
我能够通过执行来重置我的凭据
git config --global credential.helper wincred
老实说,这是玛丽,看看它是否会消灭我的凭据,它确实有效。
您必须在Credential Manager中更新它。
转到“控制面板”>“用户帐户”>“凭据管理器”>“Windows凭据”。您将在列表中看到Git凭据(例如git:https://)。单击它,更新密码,并从您的Git bash执行git pull / push命令,它不会再抛出任何错误消息。
C:\Users\<current-user>
.git-credentials
文件在Windows 10 Professional上使用最新版本的git for Windows,我有一个类似的问题,我有两个不同的GitHub帐户和一个Bitbucket帐户,所以VS2017,git扩展和git bash的东西有点混乱。
我首先检查了git如何使用此命令处理我的凭据(使用提升的命令运行git bash或者你得到错误):
git config --list
我找到了条目Credential Manager,所以我点击了START按钮>键入凭据管理器并左键单击了启动应用程序的凭证管理器yell safe图标。然后我点击Windows凭据选项卡,找到我当前的git帐户的条目,恰好是Bitbucket,所以我删除了这个帐户。
但这没有做到这一点,所以下一步是取消设置凭据,我从我的笔记本电脑上的存储库目录中做到这一点,该目录包含我试图推送到遥控器的GitHub项目。我输入以下命令:
git config --system --unset credential.helper
然后我做了一个git push,我被提示输入我输入的GitHub用户名(我需要的正确用户名),然后是相关密码,所有内容都被正确推送。
我不确定这是一个多大的问题,大多数人可能会在一个回购中工作,但我必须跨越几个并使用不同的提供商,所以可能会再次遇到这个问题。
至少在Windows上,git remote show [remote-name]
可以工作,例如
git remote show origin
对于macOS用户:
在同一台计算机上使用多个Git帐户时会出现此错误。
请按照以下步骤删除github.com凭据。
再次尝试Push或Pull to git,它将要求提供凭据。输入存储库帐户的有效凭据。完成
要清除Windows缓存的Git凭据管理器:
rm $env:LOCALAPPDATA\GitCredentialManager\tenant.cache
要么
rm %LOCALAPPDATA%\GitCredentialManager\tenant.cache
在我们的例子中,清除用户的.git-credentials文件中的密码对我们有用。
c:\users\[username]\.git-credentials
最后为我解决的是使用GitHub桌面,转到存储库设置,并从存储库URL中删除user:pass @。然后,我尝试从命令行进行推送,并提示输入登录凭据。我把所有东西都放回去了。 Visual Studio和命令行都在工作,当然还有GitHub桌面。
GitHub Desktop-> Repository-> Repository Settings-> Remote选项卡
从以下位置更改主远程存储库(源):
https://pork@[email protected]/MyProject/MyProject.git
至:
https://github.com/MyProject/MyProject.git
点击“保存”
凭据将被清除。
建立@ patthoyts的高投票答案(https://stackoverflow.com/a/15382950/4401322):
他的回答使用但不解释“本地”与“全球”与“系统”配置。他们的官方git文档是here,值得一读。
例如,我在Linux上,并且不使用系统配置,所以我从不使用--system
标志,但通常需要区分--local
和--global
配置。
我的用例是我有两个Github crendentials;一个用于工作,一个用于游戏。
这是我如何处理这个问题:
$ 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://[email protected]':
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/config
与相关的SSH密钥用于Github(一个用于工作,一个用于播放)以及相应的自定义命名远程主机来解决身份验证语境化问题。
如果上面提到的任何内容都不适合您,请尝试此操作。
git config credential.helper 'cache --timeout=30'
这将每3秒删除一次缓存,并会询问用户名和密码。您可以使用增加的超时值重新运行该命令。
如果使用密钥对进行身份验证,则可以删除或移动私钥,或者停止密钥代理并尝试。
重新输入:
$ git config credential.helper store
然后,系统将提示您再次输入凭据。
警告
使用此帮助程序会将未加密的密码存储在磁盘上
我找到了适合我的东西。当我向OP写评论时,我未能检查系统配置文件:
git config --system -l
显示一个
credential.helper=!github --credentials
线。我解开了
git config --system --unset credential.helper
现在证书被遗忘了。
在带有“wincred”*的Windows 2003 Server中,其他答案都没有帮助我。我不得不使用cmdkey
。
cmdkey /list
列出了所有存储的凭据。cmdkey /delete:Target
删除具有“目标”名称的凭证。(*由“wincred”我的意思是git config --global credential.helper wincred
)
git config --list
将展示credential.helper = manager
(这是在Windows机器上)
要禁用当前本地git文件夹的此缓存用户名/密码,只需输入即可
git config credential.helper ""
这样,git每次都会提示输入密码,忽略“manager”中保存的内容。