ChatGPT解决这个技术问题 Extra ChatGPT

Visual Studio 2017 - Git 因致命错误而失败

我正在使用 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 再次工作。我不确定为什么会发生这种情况,我也不知道微软是否计划解决这个问题。

你找到任何解决方案了吗?
尝试转到 cmd 中的解决方案文件夹并使用 git push 查看实际错误,我遇到了同样的问题,尝试了很多东西,命令行给了我失败的实际原因(我在 github 中将我的电子邮件标记为私有,它与推送详细信息冲突,因为它会使我的电子邮件在代码更改中可见)
我也遇到了各种各样的错误,只需更新 Tools > Extensions & Updates 中的 GitHub 扩展即可修复所有错误。

P
Peter Mortensen

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

https://i.stack.imgur.com/DHn0n.png


这对我有用。似乎也是所有建议解决方案中最简单的
很高兴它有帮助。如果有帮助,请您投票吗?它可能会帮助其他人。谢谢!
谢谢你。在最新更新的 VS2017 中解决了我的 GIt 问题
我刚刚删除了通用凭据下的 git 链接,它起作用了。
要访问 Credential Manager,只需在 Windows 10 中搜索(使用 windows 键)。然后单击 Windows 凭据。向下滚动到通用凭据部分并查找 git: https://your.tfs.server。更改 Windows 密码后,我收到此错误。
P
Peter Mortensen

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

导航到 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\ 并删除 Git 文件夹。确保您的系统上没有安装 Git 版本,通过转到控制面板 → 程序和功能将其删除(根据我的经验,不需要删除 TortoiseGit,只需安装本机 git)。打开 Visual Studio 2017 安装程序并在安装选项中取消选中“Git For Windows”。前往 Git 网站并安装适用于 Windows 的最新版本的 Git。返回到 Visual Studio 安装程序并再次勾选“Git for Windows”。即使看起来像它,它也不会下载新版本。完成后,您的 Git 应该可以使用 VSTS 和 TF Explorer。


我已经安装了 git for windows。执行第 1 步和第 5 步为我做了。
咳咳 - 或企业而不是上述路径中的社区 ;-)
@Douglas 你是绝对正确的。我按照你提到的。它解决了这个问题。
在第 4 步中,我使用了 64 位 Git for Windows,这对我有用。我的 VS2017 15.7.3 可以再次推送到我的遥控器而不会出现此错误。
对我来说,我只需要第 1 步。(VS 2017 Enterprise,已经安装了 git for windows。)我首先退出了 Visual Studio 2017,删除了那个 GIT 文件夹,然后重新加载了 VS 2017,一切都很好。从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer 中删除了 git 文件夹
P
Peter Mortensen

我有一个不同的问题。我的计算机在 system32 和 syswow64 中包含较旧的 OpenSSL DLL 文件,因此为了解决我的问题,我必须将 libeay32.dllssleay32.dll 从一个文件夹复制到 Visual Studio 2017 的 Git 文件夹中的另一个文件夹。

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

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

参考:Git - Can't clone remote repository


这对我有用,但你到底是在哪里找到线索的?
同样的技巧适用于“专业”,复制 dll,关闭 VS 实例,重新打开一个并尝试再次关闭。
这些不是我唯一丢失的文件。此链接描述了如何找出您必须复制的内容。 developercommunity.visualstudio.com/content/problem/27220/…
这可能是我们都在寻找的解决方案!谢谢!
@StingyJack 我将这个问题连同 Procmon 转储报告给了微软,微软的支持者发现它使用了错误的 dll。我从来没有确切地找到我安装的哪个应用程序将其所需版本的 libeay32.dll/ssleay32.dll 放在了 system32 文件夹中。
A
Abdellah Azizi

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

并重试..

享受 !


你为什么认为这个问题在错误的信用?它只会在一种情况下有所帮助,但您会收到另一个错误。没有解决问题
我不知道为什么我的旧凭据停止工作(我没有更改任何凭据),感谢您节省了我的一天。
P
Peter Mortensen

我尝试了很多,最后通过我在 Git - Can't clone remote repository 中阅读的内容进行了一些修改,终于让它工作了:

修改 Visual Studio 2017 CE 安装 → 移除 Git for windows(安装程序 → 修改 → 单个组件)。删除 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git 中的所有内容。修改 Visual Studio 2017 CE 安装 → 添加 Git for windows(安装程序 → 修改 → 单个组件) 在 windows(32 位或 64 位版本)上安装 Git,并在系统路径中配置 Git。

也许不需要第 2 点和第 3 点;我没有尝试。

现在它在我的 Gogs 上运行良好。


为我工作,但就在 1 之后,我还在我的 PC 的程序列表中卸载了 Git for Windows。
这对我有用。所以看起来 MS 发布的 Git 版本不好,用官方的 Windows 版本的 Git 替换它可以解决问题 - 只要确保它在 PATH 中,并且是安装的唯一版本的 git。我想我们终于要迁移到 VS2017 了。
P
Peter Mortensen

这是我得到的错误:

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

我尝试了所有以前的方法,但它们都不起作用。后来我发现代码中存在一些冲突(参见 Visual Studio 2017 输出窗口)。

我只是简单地还原了代码并且它起作用了。


P
Peter Mortensen

当我尝试同步存储库时,我曾经遇到过来自 Git 的这样一个错误(我试图发送我的提交,同时我的同事有待处理的更改):

Git 因致命错误而失败。拉 --verbose --progress --no-edit --no-stat --recurse-submodules=no origin

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

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

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


我的情况与此类似。我遇到了一个问题,即较新版本的 VS 2017 (15.3.2) 突然间不断让我检查这个奇怪的 storage.ide 文件。在关闭/打开 VS 后,我不得不继续提交该文件,这终于奏效了。免责声明 - 我也完成了上面最接受的答案中的步骤。
我刚刚注意到我提交的所有文件仍在“更改”下。我重新承诺了他们。问题消失了。
G
GGleGrand

这似乎发生在 VS 2017 中,当时存在与拉取冲突的待处理提交。如果您转到命令终端并执行“git pull origin”,您通常会收到错误,这是造成混乱的根源。要解决此问题,请检查 VS 2017 中的所有更改,然后再次尝试从 VS 2017 拉取或同步。不用说……这不是 VS 2017 中的理想行为。


P
Peter Mortensen

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

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


我有两台机器。两者都有 VS2017RTM。相同版本的 VS 和相同版本的 GitHub.VisualStudio。 TeamExplorer 文件夹中都没有 Git 文件夹。一种有效,一种无效。 :(
难以置信 - 我在这里删除了 git 文件夹,但它起作用了! C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git
É
Éric Bergeron

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


P
Peter Mortensen

我正在使用 GitKraken 和 Visual Studio 2017。

当 GitKraken 克隆存储库时,它会留下像“git@github.com:user/Repo.git”这样的获取地址,而不是“https://github.com/user/Repo.git”。

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


W
Wagner Melo

更改 git 访问密码后我遇到了这个问题!

我不得不通过 PowerShell 控制台重置凭据。

在 git 存储库文件夹级别,脚本如下:

git config --system --unset credential.helper

git config --system credential.helper store

git fetch

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

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

git fetch

R
Rex Andrew

https://i.stack.imgur.com/QyVoU.png

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

如果您使用的是 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"

https://i.stack.imgur.com/cR7Oy.png

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


J
Jess

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

试试这个简单的!

更改您的密码!

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

https://i.stack.imgur.com/zIup0.png

我真的不想破解 git 或 OpenSSL 库,所以我只是在我的计算机上 changed the Windows password 并且它有效!

更新

然后它又开始发生了。从 团队资源管理器 转到 同步。然后做 Actions >打开命令提示符。在命令提示符中键入 git push origin。这可能对你有用。


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

我遇到了一个非常相似的问题,微软技术人员的说明为我解决了这个问题:

关闭 Visual Studio 的所有实例。

打开任务管理器并检查是否有任何 TFS 服务正在运行。选择它们中的每一个,然后单击结束进程树。

浏览到下面的文件夹并删除 %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”并删除它


J
Jerry

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


VS 无法创建新的远程源。这是唯一对我有用的东西。您在命令行上或使用 Tortoise 对远程进行初始推送,然后 VS 可以使用它。
P
Peter Mortensen

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

在使用任何这些 Visual Studio 目录和应用程序之前先尝试一下。


P
Peter Mortensen

我使用 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 也可以推送。
P
Peter Mortensen

我通过从存储库设置中的 http://username@asdf/xxx/yy/zzz.git 中删除 username@ 使其工作:

团队资源管理器 → 设置 → 存储库设置 → 遥控器 → 编辑


m
maxim1500

我能够在命令行中使用这一行来解决这个问题,而无需重新安装任何东西。

git config --global credential.{myserver}.authority NTLM

只需将 {myserver} 替换为您的服务器的主机名(不带 http 或端口号)。

之后,VS能够正确连接。

来源:https://github.com/Microsoft/Git-Credential-Manager-for-Windows/blob/master/Docs/Faq.md#q-i-thought-microsoft-was-maintaining-this-why-does-the-gcm-not-work-as-expected-with-tfs


J
John Dow

如果您使用的是代理,请打开命令提示符并尝试:

git config --global http.proxy <proxy address>:<port>

更多信息请访问:https://github.com/desktop/desktop/issues/2789


X
XYZ

尝试删除远程分支时,我在 VS 2017 中弹出了相同的错误。问题是分支不在服务器上(使用带有 GIT 的 TFS2018),但不知何故,Visual Studio 确实让它出现在“远程/来源”部分。这意味着我无法删除远程分支(VS 发出此错误,而服务器资源管理器根本没有显示该分支)。

这是修复它的方法(在 VS 2017 中测试):

在 Visual Studio 中,双击您的“流氓”远程分支; VS 现在应该已经从它创建了一个本地分支;右键单击本地分支,选择“取消设置远程分支”;右键单击本地分支,选择“推送分支”;你现在应该有一个真正对应的远程分支;删除远程分支,然后删除本地分支。

希望它会帮助那些最终在这个线程上遇到与我相同问题的人。


M
MAQ

我在 Windows(不是 Visual Studio)中打开凭据管理器,选择“Windows 凭据”,找到我的 git:https//stash....com 通用凭据,单击向下的气泡箭头以显示用户名和密码字段编辑按钮。单击编辑,然后在此处输入我的正确密码。然后立即开始工作,无需关闭任何东西。


C
Community

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


P
Peter Mortensen

AngelBlueSky's answer 部分为我工作。在第 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,您的存储库应该返回到那里,并且所有同步/推送/拉取都应该可以正常工作。


P
Peter Mortensen

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

git config --global --edit

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

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


C
Community

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

在解决方案的根目录中打开 cmd 并输入:

git pull

然后,您将被告知确切的问题是什么。就我而言,它告诉我有未提交的更改将被覆盖,并且我需要提交它们才能继续。

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

TLDR

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


谢谢这解决了我的问题。我更改了我的域用户名密码,在此之前,我有未提交的更改。使用 git pull 时,它会显示更改用户名密码弹出窗口,这有助于我了解问题所在。然后我做了 git reset 以丢失所有以前的更改,然后它解决了我在 Visual Studio 中的问题
P
Peter Mortensen

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

我只有一个主分支。我从 master 变基到 origin/master(意味着同一个分支)并单击变基。在进行 Rebase 之前,状态是,我提交了我的更改,但是由于我的本地分支库和 Git 代码库未同步状态而无法推送/同步。


C
CodesOfPSJ

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

我尝试了我在谷歌上提出的所有建议,但没有解决方案。以下简单步骤对我有用,我将其添加到不断增长的可能解决方案列表中:

git config --get http.proxy 结果是 http://google.com:80

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

git config --global --unset http.proxy


L
Luiz Fernando Corrêa Leite

尝试:

关闭所有 VS 实例,然后在控制面板 -> 用户帐户-> Credentail 管理器中删除 TFS 服务器的帐户

参考:https://developercommunity.visualstudio.com/content/problem/142173/after-changing-domain-password-couldnt-connect-to.html


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