Visual Studio 2017-Git失败并出现致命错误


153

我正在使用Visual Studio 2017社区版(CE),并且已登录我的Microsoft帐户并已连接到VSTS。我可以看到我所有的项目和存储库,但是当我尝试拉/取/推任何更改时,出现以下错误:

Error encountered while pushing to the remote repository: Git failed with a fatal error.
PushCommand.ExecutePushCommand

相应地,对于fetch和pull命令也是如此。

我在Visual Studio 2017安装程序上安装了Windows版Git,不仅它无法与VSTS一起使用,而且我也无法与我的任何GitHub存储库一起使用。有没有其他人注意到这一点?到目前为止,这是在我的两台计算机上发生的。

Visual Studio 2015企业版(EE)和CE对我来说完全可以正常工作。

似乎这个问题已经得到我的认可,这使我相信这是Visual Studio如何处理Git的问题。我还注意到,每次更新Visual Studio时,都会弹出此问题,并且我必须仔细阅读以下某些答案中的步骤才能使Git再次工作。我不确定为什么会这样,而且我也不知道Microsoft是否计划解决此问题。


2
你有什么解决办法吗?
JerryGoyal

我尝试了至少3种回答方法,但均未成功。最糟糕的是,我什至不知道导致这种情况发生的原因。
MMalke '17年

尝试转到cmd中的解决方案文件夹并使用git push查看实际错误,我遇到了同样的问题,尝试了很多事情,命令行给了我失败的实际原因(我在github中将我的电子邮件标记为私有,与推送详细信息发生冲突,因为它会使我的电子邮件在代码更改中可见)
Royi Mindel

1
我还遇到了各种各样的错误,只需更新中的GitHub扩展即可解决所有错误Tools > Extensions & Updates
Daniel Bailey

Answers:


89

从“ 控制面板” →“ 用户帐户”“ Git的凭据管理器”更改通用凭据后,它对我有用

Enter image description here


1
这对我有用。似乎也是所有建议的解决方案中最简单的解决方案
Steve Kennedy

1
很高兴能帮到您。如果可以的话,您可以投票吗?它可能会帮助别人。谢谢!
wbing520 '18

1
谢谢你 在最新更新的VS2017中解决了我的GIt问题
Sherwin

2
我只是删除了通用凭据下的git链接,它起作用了。
肯丹

2
若要Credential Manager仅在Windows 10中进行搜索(使用Windows键)。然后单击Windows凭据。向下滚动到“通用凭据”部分,然后查找git: https://your.tfs.server。更改Windows密码后,我收到此错误。
goku_da_master

73

我将在此处添加一个解决方案,以前的答案尚未提及,但这是它为我解决的问题。

  1. 导航到C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\并删除Git文件夹。

  2. 确保您的系统上没有安装任何版本的Git,请转到控制面板程序和功能将其删除(根据我的经验,TortoiseGit不需要删除,只需安装本机git)即可。

  3. 打开Visual Studio 2017安装程序,然后在安装选项中取消选中“ Git For Windows”。

  4. 转到Git网站并安装Windows的最新版本。

  5. 返回到Visual Studio安装程序,然后再次选中“ Git for Windows”。即使看起来像新版本,它也不会下载新版本。完成之后,您的Git应该可以使用VSTS和TF Explorer了。


9
我已经为Windows安装了git。执行步骤1和步骤5为我做了。
Tomas Dittmann

4
Ahem-还是企业,而不是上述路径中的社区;-)
PhatBuck

@道格拉斯你是完全正确的。我按照你提到的去做。它解决了问题。

1
在第4步中,我使用Windows的64位Git,这对我有用。我的VS2017 15.7.3可以再次推送到我的遥控器,而不会出现此错误。
qxotk

2
对我来说,我需要做的只是步骤1。(VS 2017 Enterprise,已经为Windows安装了git。)我首先退出了Visual Studio 2017,删除了GIT文件夹,然后重新加载了VS 2017,一切都很好。gitC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer
Barumpus

41

我有一个不同的问题。我的电脑包含在SYSTEM32和SysWOW64中年长的OpenSSL DLL文件,所以要解决我的问题,我不得不复制 libeay32.dllssleay32.dll从一个文件夹到Visual Studio 2017年的Git的文件夹内的另一个文件夹。

来自:C:\Program Files (x86)\Microsoft Visual Studio\2017\vs_edition\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\bin\

收件人C:\Program Files (x86)\Microsoft Visual Studio\2017\vs_edition\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\libexec\git-core

参考:Git-无法克隆远程存储库


7
这对我有用,但是您在哪里找到了线索?
StingyJack

同样的技巧适用于“ Professional”,复制dll,关闭VS实例,重新打开一个实例并尝试再次关闭。
cvocvo

这些不是我唯一缺少的文件。该链接描述了如何找出必须复制的内容。developercommunity.visualstudio.com/content/problem/27220/…–
Riki

这很可能就是我们都在寻找的解决方案!谢谢!
tsalaroth '17

为我工作,错误:Error encountered while cloning the remote repository: Git failed with a fatal error. CloneCommand.ExecuteClone
Ogglas '17

14

我做了很多尝试,最后对它进行了一些修改,使其与我在Git中阅读的内容有所修改-无法克隆远程存储库

  1. 修改Visual Studio 2017 CE安装→删除Windows的Git(安装程序→修改→单个组件)。

  2. 从中删除所有内容C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git

  3. 修改Visual Studio 2017 CE安装→为Windows添加Git(安装程序→修改→单个组件)

  4. 在配置了系统路径中的Git的Windows(32或64位版本)上安装Git。

也许不需要第二点和第三点;我没有尝试。

现在,我的Gogs可以正常工作了。


1
为我工作,但是在1之后,我还在PC的程序列表中卸载了Windows版Git。
benichka

这对我有用。因此,看起来好像MS附带的Git版本不好,用正式的Windows Git版本替代它可以解决问题-只需确保它在PATH中,并且安装了唯一的git版本。我认为我们终于要迁移到VS2017。
恩诺(Enno)

12

Control Panel\All Control Panel Items\Credential Manager==> Windows Credentials 删除Git中:http:// ........

然后重试..

请享用 !


您为什么认为该问题有误?它只会在一种情况下有帮助,但您会收到另一种错误。氏没有解决的问题
亚历ž

11

这是我得到的错误:

Git failed with a fatal error.
pull --verbose --progress --no-edit --no-stat --recurse-submodules=no origin

我尝试了所有以前的方法,但是它们没有用。后来我发现代码中有一些冲突(请参阅Visual Studio 2017输出窗口)。

我只是还原了代码即可。


7

在尝试同步存储库时,我曾经在Git中遇到过这样的错误(我尝试在我的同事正在等待更改的同时发送提交):

Git因致命错误而失败。pull --verbose --progress --no-edit --no-stat --recurse-submodules =没有起源

原来,按下 Commit all按钮创建本地提交后,Visual Studio留下了一个未提交的文件,该详细的错误消息实际上意味着:“提交所有更改”。

缺少的文件是Entity Framework 6模型,尽管您没有更改任何内容,但通常显示为未提交的文件。

您可以全部提交或撤消所有未提交的更改。


2
我的与此相似。我遇到一个问题,即新版本的VS 2017(15.3.2)突然突然使我不断检查这个奇怪的storage.ide文件。在关闭/打开VS之后,我不得不继续提交该文件,并且终于可以了。免责声明-我还完成了上面最常见的答案中的步骤。
jaredbaszler '17

我只是注意到我提交的所有文件仍在“更改”下。我重新提交了。问题就解决了。
裘德

5

在VS 2017中,这似乎发生了,因为有一个挂起的提交会与拉动冲突。如果转到命令终端并执行“ git pull origin”,通常会得到错误,这是造成混乱的根源。要解决此问题,请在VS 2017中签入所有更改,然后尝试从VS 2017中再次拉出或同步。不用说...这不是VS 2017中不希望的行为。


4

我遇到过同样的问题。重新启动Visual Studio对我有用。您可以在重新安装东西之前尝试一下。


4

我正在使用GitKraken和Visual Studio 2017。

当GitKraken克隆存储库时,它将保留获取地址,例如“ git@github.com:user / Repo.git”,而不是“ https://github.com/user/Repo.git” ”。

要解决此问题,请转到团队资源管理器设置存储库设置遥控器编辑,然后将“ git @”更改为“ https://” ,将 “:”更改为“ /”。


4

更改git访问密码后出现了这个问题!

我必须通过PowerShell控制台重置凭据。

在git repository文件夹级别,脚本如下:

git config --system --unset credential.helper

git config --system credential.helper store

git fetch

系统将提示您输入用户,然后提示输入密码。

下一条命令将不再请求身份验证:

git fetch

4

在此处输入图片说明

当我进行拉/取/推时,在输出窗口中出现上述错误,我遵循以下soloution,它解决了我的问题。

如果您使用的是Visual Studio 2017企业版,请在以下命令中将userId替换为用户ID,然后在Windows运行窗口(Windows键+ R)中执行此命令。

Runas / netonly / user:UserId“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ devenv.exe”

在此处输入图片说明

这将提示您输入密码,输入密码。一个新的Visual Studio实例将打开并开始正常工作...


3

我遇到过同样的问题。以下步骤为我解决了这个问题:

  1. 备份和删除“ C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ 2017 \ Professional \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TeamFoundation \ Team Explorer \ Git”
  2. 安装最新版本的Git:https : //git-scm.com/download/win

2
我有两台机器。两者都带有VS2017RTM。相同版本的VS和相同版本的GitHub.VisualStudio。两个TeamExplorer文件夹都没有Git文件夹。一种有效,一种无效。:(
比尔·诺埃尔

3

哇!这个问题有很多解决方案!

试试这个简单的!

更改您的密码!

就在前几天,我开始收到此通知,告知我密码将在14天后过期。现在2天后,我收到此错误:

在此处输入图片说明

我真的不喜欢入侵git或OpenSSL库,所以我只更改了计算机上的Windows密码即可使用!

更新资料

然后又开始发生。从Team Explorer转到Sync。然后执行操作>打开命令提示符。在命令提示符下,键入git push origin。那可能对您有用。


这似乎是最聪明的解决方案!谢谢;)
markzzz

2

我遇到了非常类似的问题,Microsoft的技术人员为我修复了该问题:

  • 关闭Visual Studio的所有实例。
  • 打开任务管理器,然后检查是否正在运行任何TFS服务。选择它们中的每一个,然后单击End Process Tree。
  • 浏览到下面的文件夹,并删除%LocalAppData%\ Microsoft \ Team Foundation {version} \ Cache中的所有内容和文件夹
  • 转到控制面板->用户帐户->管理您的凭据-> Windows凭据,选择VSTS URL将其删除
  • 然后转到“ C:\ Users \ USER NAME \ AppData \ Local \ GitCredentialManager \ tenant.cache”并将其删除
  • 还要转到“ C:\ Users \ USER NAME \ AppData \ Local.IdentityService”并将其删除

1

我也遇到了这个问题。我已经在当天早些时候同步了我的代码,因此突然出现Git错误是没有意义的。重新启动Visual Studio没有任何区别。在查看了以上答案并没有找到明确的解决方案后,我决定尝试使用已经安装的TortoiseGit在Visual Studio外部进行同步。这工作了。这样便可以正常在Visual Studio中进行同步。如果您还没有TortoiseGit,则可以从tortoisegit.org免费下载。


VS无法创建新的远程起源。这是唯一对我有用的东西。您可以通过命令行或使用Tortoise将其初始推入遥控器,然后VS可以使用它。
HackSlash

1

就我而言,Windows已运行更新,并正在等待重新启动PC。我没有看到任何通知,但是,好吧...将其关闭然后再次打开可以解决问题。

在尝试使用这些Visual Studio目录和应用程序之前,请先尝试该操作。


1

我使用Visual Studio 2017 CE收到以下错误消息。

推送到远程存储库失败。有关更多详细信息,请参见“输出”窗口。

输出窗口显示以下内容:

推送到远程存储库时遇到错误:Git进程意外失败。PushCommand.ExecutePushCommand

我尝试使用GitHub Desktop推送更改。它显示以下错误消息。

无法提交这些提交,因为它们包含在GitHub上标记为私有的电子邮件地址。

而已。解:

打开GitHub帐户>>设置>>电子邮件>>取消选中“保持我的电子邮件地址不公开”

完成。就我而言,这就是问题所在。


这也是我的问题。我不得不取消选中Block command line pushes that expose my email设置,推送未决的提交。然后,我在git global config中配置了我的GitHub不答复电子邮件地址。然后,所有将来的提交都将与该电子邮件相关联,即使Block command line pushes that expose my email再次打开也可以将其推送。
SvenAelterman'7



1

当我必须更改密码时,此问题始终会发生在我身上。好像我的旧凭证始终存在另一个问题,无法更新。

  1. 转到Windows凭据管理器

  2. 删除所有Tfs凭证条目

已完成


1

尝试删除远程分支时,VS 2017中弹出相同的错误。问题是分支不在服务器上(将TFS2018与GIT一起使用),但是Visual Studio确实以某种方式将其显示在“远程/来源”部分中。这意味着我无法删除远程分支(VS正在发出此错误,而服务器浏览器根本没有显示该分支)。

修复方法如下(已在VS 2017中测试):

  1. 在Visual Studio中,双击“流氓”远程分支;
  2. VS现在应该已经从中创建了一个本地分支。
  3. 右键单击本地分支,选择“取消远程分支”;
  4. 右键单击本地分支,选择“推送分支”;
  5. 您现在应该拥有一个真实的相应远程分支。
  6. 删除远程分支,然后删除本地分支。

希望它可以帮助最终在此线程上遇到与我相同的问题的人。


0

wget从GNU工具获得并复制到c:\ windows后,我也遇到了这个问题。该libeay.dlllibssl.dll在存档文件名也。当它们在c:\ windows中时,我遇到了这个问题。立即将它们卸下将其修复。因此,检查路径中是否有这些.DLL,VS可能会选择这些软件的某些其他软件版本,而不是使用它期望的版本。


0

AngelBlueSky的答案部分对我有用。在步骤4之后,我必须执行这些额外的行来清理Git全局配置:

git config --global credential.helper wincred
git config http.sslcainfo "C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt"
git config --global --unset core.askpass
git config --global --unset mergetool.vsdiffmerge.keepbackup
git config --global --unset mergetool.vsdiffmerge.trustexitcode
git config --global --unset mergetool.vsdiffmerge.cmd
git config --global --unset mergetool.prompt
git config --global --unset merge.tool
git config --global --unset difftool.vsdiffmerge.keepbackup
git config --global --unset difftool.vsdiffmerge.cmd
git config --global --unset difftool.prompt
git config --global --unset diff.tool

然后git config -l(从任何git repo中执行)应仅返回以下内容:

core.symlinks=false
core.autocrlf=false
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=xxxxxxxxxxxx
user.email=xxxxx@xxxxxx.xx
credential.helper=wincred
core.bare=false
core.filemode=false
core.symlinks=false
core.ignorecase=true
core.logallrefupdates=true
core.repositoryformatversion=0
remote.origin.url=https://xxxxxx@bitbucket.org/xxx/xxx.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.identityserver.remote=origin
branch.identityserver.merge=refs/heads/identityserver
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt

运行git statusgit fetch命令,以从命令行验证其是否有效。

然后转到Visual Studio,您的存储库应该在该存储库中了,所有同步/推入/拉出都应正常工作。


0

在安装了最新版本的Git for Windows之后,您必须打开配置文件进行编辑:

git config --global --edit

单击Insert,删除所有设置,单击Esc,键入:wqEnter保存。

现在,您可以使用有效用户通过Bash或IDE克隆存储库。


0

就我而言,我不需要做任何剧烈的事情,例如按照这里的一些答案卸载Git。我只需要使用命令行而不是Visual Studio。

cmd从解决方案的根目录打开,然后输入:

git pull

然后,您将确切地知道问题所在。就我而言,它告诉我我尚未提交的更改将被覆盖,并且我需要先提交它们,然后才能继续。

完成此操作后,拉取成功,并且可以解决合并工具中的冲突。

TLDR

使用命令行而不是Visual Studio来获取更完整的错误消息。


谢谢你,这解决了我的问题。我更改了域用户名密码,在此之前,我尚未进行更改。使用git pull时,它会显示更改用户名密码的弹出窗口,可帮助我理解问题所在。然后我做了git reset来丢失所有先前的更改,然后它解决了我在Visual Studio中的问题
Esen,

0

我遇到了类似的问题。在Visual Studio 2017中,使用Rebase选项解决了我的问题。

我只有一个主分支。我从master重置为origin / master(意味着到同一分支),然后单击Rebase。在执行Rebase之前,状态是,我已提交更改,但是由于本地分支库和Git代码库未处于同步状态,因此无法推送/同步。


0

通过删除本地存储库使问题更加复杂,因此我可以克隆一个新副本。我遇到了新错误 “找不到git,Git失败并出现致命错误。致命:未找到存储库'xyz'”

我尝试了所有关于google的建议,但没有解决方法。以下简单步骤对我有用,我将其添加到越来越多的可能的解决方案列表中:

git config-获取http.proxy结果为http://google.com:80

这是不对的,所以我摆脱了它。

git config --global --unset http.proxy



0

在我的案例中,无法通过Jest单元测试阻止推送到仓库给出了与“推送到远程存储库时遇到的错误:Git失败并出现致命错误”相同的一般错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.