Visual Studio 2017 - сбой Git с фатальной ошибкой

153

Я использую Visual Studio 2017 Community Edition (CE), и я вошел в свою учетную запись Microsoft, и я подключен к VSTS. Я вижу все свои проекты и репозитории, но когда я пытаюсь получить / извлечь / отправить любые изменения, я получаю следующую ошибку:

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

И соответственно для команд fetch и pull тоже.

Я установил Git для Windows на установщик Visual Studio 2017, и он не только не работает с VSTS, но и не может работать ни с одним из моих репозиториев GitHub. Кто-нибудь еще заметил это? Пока что это случилось на двух моих машинах.

Visual Studio 2015 Enterprise Edition (EE) и CE работают совершенно нормально для меня.

Кажется, что эта проблема получила гораздо большее признание, чем я думал, и это заставляет меня поверить, что это проблема того, как Visual Studio работает с Git. Я также заметил, что каждый раз, когда я обновляю Visual Studio, эта проблема всплывает снова, и мне нужно пройти через шаги в некоторых ответах ниже, чтобы заставить Git работать снова. Я не уверен, почему это происходит, и я также не знаю, планируют ли Microsoft решить эту проблему.

Тоби
источник
2
ты нашел какое-нибудь решение?
JerryGoyal
Я попробовал по крайней мере 3 из отвеченных методов без какого-либо успеха. Хуже того, я даже понятия не имею, что послужило причиной этого.
MMalke
попробуйте зайти в папку решения в cmd и с помощью git push увидеть фактическую ошибку, у меня была та же проблема, я много пробовал, командная строка дала мне реальную причину сбоя (я пометил свою электронную почту как частную в github и конфликтовал с деталями push-сообщения, так как это делало бы мою электронную почту видимой при изменении кода)
Рой Миндел
1
Я также получал всевозможные ошибки, исправлял их, просто обновляя расширение GitHub Tools > Extensions & Updates.
Даниэль Бэйли

Ответы:

89

После того, как я изменил общие учетные данные из Панели управленияУчетные записи пользователейДиспетчер учетных данных для Git , у меня все заработало.

Введите описание изображения здесь

wbing520
источник
1
Это сработало для меня. Выглядело как самое простое из всех предложенных решений
Стив Кеннеди
1
Рад, что это помогает. Не могли бы вы проголосовать, если это поможет? Это может помочь другим. Спасибо!
wbing520
1
Спасибо за это. Решил мою проблему GIt в последнем обновленном VS2017
Шервин
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 и установить последнюю версию Git для Windows.

  5. Вернитесь в установщик Visual Studio и снова отметьте «Git for Windows». Он не будет загружать новую версию, даже если он выглядит так, как есть. После того, как это сделано, ваш Git должен быть в порядке с VSTS и TF Explorer.

Тоби
источник
9
У меня уже был git для Windows установлен. Выполнение шага 1 и шага 5 сделало это для меня.
Томас Диттманн
4
Гм - или Enterprise вместо сообщества по вышеуказанному пути ;-)
PhatBuck
@ Дуглас, ты абсолютно прав. Я следовал тому, что вы упомянули. Это решает проблему.
Тун
1
На шаге 4 я использовал 64-битный Git для Windows, и это сработало для меня. Мой VS2017 15.7.3 может снова нажать на мой пульт без этой ошибки.
qxotk
2
Для меня все, что мне было нужно, это шаг 1. (В VS 2017 Enterprise уже был установлен git для Windows.) Сначала я вышел из Visual Studio 2017, удалил эту папку GIT, затем перезагрузил VS 2017, и все было хорошо. Удалена gitпапка изC:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer
Barumpus
41

У меня была другая проблема. Мой компьютер содержал более старые файлы DLL OpenSSL в system32 и syswow64, поэтому, чтобы решить мою проблему, мне пришлось скопировать libeay32.dllиssleay32.dll из одной папки в другую папку в папках Git Visual Studio 2017.

ОТ: 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 - Не могу клонировать удаленный репозиторий

flatrick
источник
7
Это сработало для меня, но где, черт возьми, вы нашли ключ?
StingyJack
Тот же трюк работает для «Профессионала», скопируйте DLL, закройте экземпляры VS, снова откройте и попробуйте снова закрыть.
cvocvo
Это были не единственные файлы, которые мне не хватало. Эта ссылка описывает, как узнать, что вы должны скопировать. developercommunity.visualstudio.com/content/problem/27220/…
Рики,
Это вполне может быть решением, которое мы все ищем! Спасибо!
Цаларот
Работал на меня, Ошибка:Error encountered while cloning the remote repository: Git failed with a fatal error. CloneCommand.ExecuteClone
Ogglas
14

Я много пробовал и, наконец, получил работу с некоторыми изменениями из того, что я прочитал в Git - Не могу клонировать удаленный репозиторий :

  1. Изменить установку Visual Studio 2017 CE → удалить Git для Windows (программа установки → изменить → отдельные компоненты).

  2. Удалить все из C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git.

  3. Изменить установку Visual Studio 2017 CE → добавить Git для Windows (программа установки → изменить → отдельные компоненты)

  4. Установите Git на Windows (32- или 64-битная версия), настроив Git в системном пути.

Возможно, пункты 2 и 3 не нужны; Я не пытался.

Теперь это работает хорошо на моих Gogs.

AngelBlueSky
источник
1
Работал для меня, но сразу после 1 я также удалил Git для Windows в списке программ для моего компьютера.
benichka
Это сработало для меня. Таким образом, похоже, что версия Git, поставляемая MS, плохая, и замена ее на официальный выпуск Git для Windows устраняет проблему - просто убедитесь, что она находится в PATH и единственной установленной версии git. Я думаю, что мы наконец-то переходим на VS2017.
Энно
12

В Control Panel\All Control Panel Items\Credential Manager==> Windows Credentials Удалить Git: http: // ........

и повторите попытку ..

Наслаждайтесь !

Абделла Азизи
источник
Почему вы думаете, что проблема в неправильных кредитах? Это поможет только в одном случае, но вы получите другую ошибку. Это не решает проблему
Alex Z
11

Это ошибка, которую я получил:

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

Я перепробовал все предыдущие методы, но они не сработали. Позже я обнаружил, что в коде были некоторые конфликты (см. Окно вывода Visual Studio 2017).

Я просто вернул код, и он работал.

JerryGoyal
источник
7

Однажды у меня была такая ошибка от Git, когда я пытался синхронизировать репозиторий (я пытался отправлять свои коммиты, ожидая изменений от моего коллеги):

Git потерпел неудачу с фатальной ошибкой. pull --verbose --progress --no-edit --no-stat --recurse-submodules = нет источника

Оказалось, что после нажатия Commit all кнопки для создания локального коммита Visual Studio оставил один файл незафиксированным, и это сложное сообщение об ошибке фактически означало: «Принять все ваши изменения».

Этот отсутствующий файл был моделью Entity Framework 6, и он часто отображается как незафиксированный файл, хотя вы ничего не изменили в нем.

Вы можете зафиксировать все или отменить все изменения, которые не зафиксированы.

ZenekMetalGuru
источник
2
Мой был похож на это. У меня возникла проблема, когда новая версия VS 2017 (15.3.2) внезапно постоянно заставляла меня проверять этот странный файл storage.ide. Я должен был продолжать фиксировать этот файл после закрытия / открытия VS, и это, наконец, сработало. Отказ от ответственности - я также выполнил шаги в наиболее принятом ответе выше.
Джаредбазслер
Я только заметил, что все файлы, которые я зафиксировал, все еще находились в разделе «Изменения». Я их подтвердил. И проблема ушла.
Джуд
5

Похоже, это происходит в VS 2017, когда существует ожидающий коммит, который будет конфликтовать с извлечением. Если вы идете в командный терминал и выполняете «git pull origin», вы обычно получаете ошибку, которая является источником путаницы. Чтобы решить эту проблему, проверьте все свои изменения в VS 2017, а затем попробуйте снова выполнить синхронизацию с VS 2017. Нет необходимости говорить ... это нежелательное поведение в VS 2017.

GGleGrand
источник
4

Я была такая же проблема. Перезапуск Visual Studio работал для меня ... Вы можете попробовать это перед переустановкой вещи.

Эрик Бержерон
источник
4

Я использую GitKraken и Visual Studio 2017.

Когда GitKraken клонирует репозиторий, он оставляет адрес извлечения, например, «git@github.com: user / Repo.git», а не « https://github.com/user/Repo.git ».

Чтобы исправить это, перейдите в Team ExplorerНастройкиRepository НастройкиПУлЬТОВEdit и изменить "мерзавцем @" на "https: //" и ":" на "/".

Avius
источник
4

У меня была эта проблема после изменения пароля доступа к git!

Мне пришлось сбросить учетные данные через консоль PowerShell.

На уровне папки репозитория git скрипт был следующим:

git config --system --unset credential.helper

git config --system credential.helper store

git fetch

Вам будет предложено ввести имя пользователя, а затем пароль.

Следующая команда больше не будет запрашивать аутентификацию:

git fetch
Вагнер Мело
источник
4

введите описание изображения здесь

Когда я выполняю pull / fetch / push, я получаю вышеуказанную ошибку в моем окне вывода, я следую приведенному ниже решению, это решает мою проблему.

Если вы используете Visual Studio 2017 Enterprise Edition, замените ИД пользователя на ИД пользователя в приведенной ниже команде и выполните эту команду в окне запуска Windows (клавиша Windows + R).

runas / netonly / user: ИД пользователя "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ devenv.exe"

введите описание изображения здесь

Это запросит пароль, введите ваш пароль. Откроется новый экземпляр Visual Studio и начнет работать правильно ...

Rex
источник
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
Vortex852456
источник
2
У меня есть две машины. Оба имеют VS2017RTM на них. Та же версия VS и та же версия GitHub.VisualStudio. Ни в одной папке TeamExplorer нет папки Git. Один работает, а другой нет. :(
Билл Ноэль
3

Вот Это Да! Есть так много решений этой проблемы!

Попробуйте это легко!

Изменить пароль!

Буквально на днях я начал получать уведомление о том, что срок действия моего пароля истечет через 14 дней. Через 2 дня я получаю эту ошибку:

введите описание изображения здесь

Мне действительно не хотелось взламывать библиотеки git или OpenSSL, поэтому я просто изменил пароль Windows на своем компьютере, и это сработало!

Обновить

Затем это начало происходить снова. Из Team Explorer перейдите к синхронизации . Затем выполните Действия> Открыть командную строку . В командной строке введите git push origin. Это может сработать для вас.

Джесс
источник
Это, кажется, самое умное решение! Спасибо;)
markzzz
2

У меня была очень похожая проблема, и инструкции от технического специалиста Microsoft устранили ее для меня:

  • Закройте все экземпляры Visual Studio.
  • Откройте диспетчер задач и проверьте, работают ли какие-либо службы TFS. Выберите каждый из них и нажмите на «End Process Tree».
  • Перейдите в папку ниже и удалите все содержимое и папки в папке% LocalAppData% \ Microsoft \ Team Foundation {version} \ Cache
  • Перейдите в Панель управления -> Учетные записи пользователей -> Управление учетными данными -> Учетные данные Windows, выберите URL-адрес VSTS, чтобы удалить его
  • Затем перейдите в «C: \ Users \ ИМЯ ПОЛЬЗОВАТЕЛЯ \ AppData \ Local \ GitCredentialManager \ tenant.cache» и удалите его.
  • Также перейдите в «C: \ Users \ ИМЯ ПОЛЬЗОВАТЕЛЯ \ AppData \ Local.IdentityService» и удалите его
Casey
источник
1

Я столкнулся с этой проблемой также. Я синхронизировал свой код ранее в тот же день, поэтому не имело смысла, что он внезапно выдал эту ошибку Git. Перезапуск Visual Studio не имел никакого значения. Изучив приведенные выше ответы и не найдя четкого решения, я решил попробовать выполнить синхронизацию вне Visual Studio с помощью уже установленного TortoiseGit. Это сработало. После этого я смог нормально синхронизироваться в Visual Studio. Если у вас еще нет TortoiseGit, вы можете скачать его (бесплатно) с tortoisegit.org.

Джерри
источник
VS не способен создать новый удаленный источник. Это единственное, что работает для меня. Вы делаете начальный толчок к удаленному в командной строке или с Черепахой, и тогда VS может использовать это.
HackSlash
1

В моем случае Windows запустила обновление и ожидала перезагрузки ПК. Я не видел никаких уведомлений, но, ну ... отключение и повторное включение решило проблему.

Попробуйте это перед тем, как приступить к работе с любым из этих каталогов и приложений Visual Studio.

RLH
источник
1

Я получил следующие сообщения об ошибках, используя Visual Studio 2017 CE.

Не удалось отправить в удаленный репозиторий. Смотрите окно вывода для более подробной информации.

Окно вывода показало следующее:

Обнаружена ошибка при отправке в удаленный репозиторий: процесс Git неожиданно завершился неудачно. PushCommand.ExecutePushCommand

Я пытался отправить изменения с помощью GitHub Desktop. Это показывает следующее сообщение об ошибке.

Невозможно отправить эти коммиты, так как они содержат адрес электронной почты, помеченный как частный на GitHub.

Это оно. Решение:

открыть учетную запись GitHub >> Настройки >> Электронная почта >> Снимите флажок «Сохранить мой адрес электронной почты частным»

Это сделано. Это была проблема в моем случае.

Pranav
источник
Это тоже была моя проблема. Мне пришлось снять Block command line pushes that expose my emailнастройку, нажать коммиты, которые ожидали. Затем я настроил свой адрес электронной почты GitHub без ответа в git global config. Любые будущие коммиты были затем связаны с этим электронным письмом и теперь могут быть отправлены даже после Block command line pushes that expose my emailвключения.
SvenAelterman
1

Я заработал, удалив имя пользователя @ из http: //username@asdf/xxx/yy/zzz.git в настройках репозитория:

Team ExplorerНастройкиRepository НастройкиПУлЬТОВИзменить

Майкл Нилунд
источник
1

Я смог решить проблему с помощью этой строки в командной строке, не переустанавливая ничего.

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

Просто замените {myserver} именем хоста вашего сервера (без http или номера порта).

После этого VS смог правильно подключиться.

Источник: https://github.com/Microsoft/Git-Credential-Manager-for-Windows/blob/master/Docs/Faq.md#qi-thought-microsoft-was-maintenance-this-why-does-the- GCM-не-работа-как-ожидалось, с-ТПО

maxim1500
источник
1

Эта проблема всегда возникает у меня - когда мне нужно сменить пароль. Такое ощущение, что всегда есть другая проблема с моими старыми учетными данными, которые не обновляются.

  1. Перейдите к своему диспетчеру учетных данных Windows

  2. Удалить все учетные записи Tfs

Законченный

Питер
источник
1

У меня была такая же ошибка выскакивала в VS 2017 при попытке удалить удаленную ветку. Проблема заключалась в том, что ветвь отсутствовала на сервере (с использованием TFS2018 с GIT), но каким-то образом Visual Studio отображала ее в разделе «remote / origin». Это означало, что я не мог удалить удаленную ветку (VS выдавал эту ошибку, в то время как обозреватель сервера вообще не отображал ветку).

Вот как это исправить (протестировано в VS 2017):

  1. В Visual Studio дважды щелкните по вашей «мошеннической» удаленной ветке;
  2. VS должен был теперь создать локальную ветвь от этого;
  3. Щелкните правой кнопкой мыши локальную ветку, выберите «Удалить удаленную ветку»;
  4. Щелкните правой кнопкой мыши на местном филиале, выберите «Push branch»;
  5. Теперь вы должны иметь истинный соответствующая удаленная ветвь;
  6. Удалите удаленную ветку, затем локальную ветку.

Надеюсь, это поможет кому-то, кто окажется в этой теме, столкнуться с той же проблемой, что и я.

XYZ
источник
0

У меня также была эта проблема после того, как я получил wgetот инструментов GNU и скопировал ее прямо в c: \ windows . libeay.dllИ libssl.dllфайлы были также в архиве. Когда они были в c: \ windows , у меня была эта проблема. Удаление их сразу исправило. Итак, проверьте, есть ли у вас эти .DLLs где-то на вашем пути, VS, возможно, выбирает их версии другого программного обеспечения вместо того, чтобы использовать ожидаемые.

Ник Пироканац
источник
0

Ответ AngelBlueSky работал частично для меня. Мне пришлось выполнить эти дополнительные строки для очистки глобальной конфигурации Git после шага 4:

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-репо) должен вернуть только это:

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 statusи git fetchкоманд для подтверждения того, что она работает из командной строки.

Затем перейдите в Visual Studio, где ваши репозитории должны вернуться, и все sync / push / pull должны работать без проблем.

Softlion
источник
0

После установки последней версии Git для Windows вы должны открыть файл конфигурации для редактирования:

git config --global --edit

Нажмите Insert, удалите все настройки, нажмите Esc, введите :wqи, Enterчтобы сохранить.

Теперь вы можете клонировать репозиторий с помощью Bash или IDE с действительным пользователем.

johnander11
источник
0

В моем случае мне не нужно было делать что-то столь радикальное, как удаление Git, согласно некоторым ответам здесь; Мне просто нужно было использовать командную строку вместо Visual Studio.

Откройте cmdв корне вашего решения и введите:

git pull

Затем вам скажут точно, в чем проблема. В моем случае мне сказали, что у меня есть незафиксированные изменения, которые были бы перезаписаны, и что мне нужно было их зафиксировать, прежде чем я смогу продолжить.

Как только я это сделал, проверка прошла успешно, и я смог разрешить конфликт в инструменте слияния.

TLDR

Используйте командную строку вместо Visual Studio, чтобы получить более полное сообщение об ошибке.

Бен
источник
Спасибо, это решило мою проблему. Я изменил свой пароль для имени пользователя в своем домене, и до этого у меня были незафиксированные изменения. Когда используется git pull, он показывает всплывающее окно смены имени пользователя, которое помогло мне понять, в чем проблема. Затем я сделал git reset, чтобы потерять все предыдущие изменения, и тогда это решило мою проблему в Visual studio
Esen
0

У меня были похожие проблемы. В Visual Studio 2017 с опцией Rebase я решил свою проблему.

У меня только мастер ветка. Я перебазирования от мастера происхождения / мастер (средства к той же ветви) и нажал Rebase . Перед выполнением Rebase статус был, я зафиксировал свои изменения, однако не смог нажать / синхронизировать, поскольку моя локальная база веток и база кода Git не были синхронизированы.

Pallavi
источник
0

Усугубил проблему, удалив локальный репозиторий, чтобы я мог клонировать свежую копию. Я столкнулся с новой ошибкой: "git не найден. Git завершился ошибкой с фатальной ошибкой .atal: репозиторий 'xyz' not found"

Я попробовал все предложения, о которых я гуглю без разрешения. Следующий простой шаг работал для меня, и я добавляю его в растущий список возможных решений:

git config - получите http.proxy результат будет http://google.com:80

это не правильно, поэтому я избавился от этого.

git config --global --unset http.proxy

CodesOfPSJ
источник
0

Пытаться:

Закрытие всех экземпляров VS, а затем удаление учетной записи для сервера TFS в Панели управления -> Учетные записи пользователей-> Диспетчер учетных данных

См. Https://developercommunity.visualstudio.com/content/problem/142173/after-changing-domain-password-couldnt-connect-to.html.

Луис Фернандо Корреа Лейте
источник
Это сработало для меня. Выглядело как самое простое из всех предложенных решений тоже.
Стив Кеннеди
0

В моем случае неудачный модульный тест Jest, препятствующий отправке в репо, дает такую ​​же общую ошибку: «Ошибка при отправке в удаленный репозиторий: сбой Git с фатальной ошибкой».

Роб С
источник