Cygwin/Git обнаружено несоответствие базы данных cygwin

Я установил два сервера Windows с последними версиями cygwin и git, и я пытаюсь клонировать репозиторий git от S1 до S2. Я могу успешно ssh от S2 до S1, используя ключи RSA, но когда я это делаю: git clone "ssh://root @S1/path/to/my/repo" Он отбрасывает этот вывод:

    Cloning into /cygdrive/c/program files/apache software foundation/apache2.2/htdocs/myfolder...
    2 [main] git 2004 C:/cygwin/lib/git-core/git.exe *** fatal error - cygheap base mismatch detected - 0x61242860/0x6123790.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search fro cygwin1.dll using the WIndows Start->Find/Search facility and delete all bu the most recent version.  The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distrubtion. Rebooting is also suggested if you are unable to find another cygwin DLL.  

--5 more errors like that one --

remote: Counting objects: 3275, done.
remote: Compressing oobjects: 100% (3106/3106), done.
fatal: write error: Broken pipe

Итак, я последовал этим инструкциям, но не повезло. Любые предложения?

Ответы

Ответ 1

У меня была та же проблема.

Я просто перезапустил мой компьютер, и он снова работал.

Это не помогает найти причину проблемы, но по крайней мере вы можете продолжать работать.

Ответ 2

EDIT: я нашел решение.

TL; DR: Перейдите в папку GitHub AppData​​strong > и удалите папку PortableGit и перезапустите GitHub

  • Закрыть GitHub
  • Перейдите в папку GitHub AppData: C:\Users\[username]\AppData\Local\GitHub
  • Удалить папку, начинающуюся с PortableGit, и заканчивается случайной строкой букв и цифр
  • Перезапустите GitHub. Он будет повторно извлекать DLL, и проблема должна быть исправлена!

(Оригинальный "ответ" ) Я пробовал целую кучу вещей, и я понятия не имею, что на самом деле работало в конце. Я перезапустил GitHub, перезапустил свой компьютер, удалил и переустановил GitHub, удалил несколько других программ, которые я недавно установил, но мне не пришлось, удалил папку GitHub в каталоге AppData\Local, загрузил и установил cygwin, и, возможно, некоторые другие вещи "Забыл".

Последняя попытка - найти все файлы cygwin1.dll в Проводнике и переименовать их в cygwin1x.dll, а затем перезагрузить компьютер. После того, как я это сделал, он снова работал.

Я могу предположить, что здесь, но я скажу, что загрузка и установка cygwin, а затем перезагрузка моего компьютера сделала трюк.

Ответ 3

Нет Cygwin, нет GitHub

Я только начал испытывать это в последнее время, и ни один из приведенных выше ответов не применил к моему делу - У меня не было установлено Cygwin или GitHub.

Вместо этого в моем случае функция безопасности Windows, Рандомизация макета пространства адресов или ASLR создала эту проблему. По умолчанию это отключено для программ, которые не считают себя совместимыми.
Тем не менее, я включил ASLR для всех программ для обеспечения дополнительной безопасности. Недостатком является то, что команды git теперь не работают.

Решение

Решение заключалось в том, чтобы исключить ASLR для исполняемых файлов git.. Поскольку их довольно много, мне пришлось использовать PowerShell в качестве administrator:

  Get-Item -Path "C:\Program Files\Git\usr\bin\*. exe" | % {Set-ProcessMitigation -Name $_. Name -Disable ForceRelocateImages}
Код>

Ответ 4

Вы не упомянули об этом в своем заявлении о проблеме, но я предполагаю, что вы работаете в 64-разрядной версии Windows. У Cygwin проблемы с 64-разрядной версией Windows, особенно с большими программами. Я считаю, что это связано с проблемами управления памятью в библиотеке поддержки cygwin1.dll. Похоже, что это делает неудовлетворительное предположение о том, что он будет вечно и всегда будет сопоставлен с одним и тем же адресом в каждом процессе, так что для него все в порядке, чтобы сохранить специфические вещи процесса (например, кучи) в общесистемных глобальных переменных.

В моем большом свободном времени я пытался отследить проблематичные биты. Тем временем вы можете попробовать перезагрузить сам cygwin1.dll. Будьте предупреждены, что большой удар намного сложнее, чем нужно, - еще сложнее, чем перезагрузка всего остального.

Ответ 5

Для меня причина заключалась в том, что git не был установлен через cygwin, хотя регулярная загрузка из git -scm. Как только я запустил настройку cygwin, добавил git, он работал отлично.

Ответ 6

Вы получаете эту ошибку с любыми другими командами? С git --version?

Попробуйте перезагрузить Cygwin setup.exe и переустановите cygwin1.dll (пакет "cygwin" в разделе "База" ) и ваш пакет git (пакет "git" в разделе "Devel" ) и перезагрузка.

Ответ 7

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

Во-первых, запустите cygcheck PROGRAMM, в моем случае у меня была проблема с tar.exe, поэтому я побежал: cygcheck tar команда cygcheck показывает, какие DLL используются.

Все выглядело правильно в cygcheck, поэтому я решил, основываясь на комментариях Джима Шнайдера, перейти от 64-битной версии Cygwin к 32-битной версии, что в конечном итоге решило мою проблему.

Ответ 8

Для меня проблема заключалась в существовании более старой папки C:\cygwin64. Переименования этой папки было недостаточно. Когда я удалил эту папку, проблема исчезла. Мне не нужно было перезагружаться после удаления папки C:\cygwin64.

Ответ 9

В моем случае перезагрузка компьютера не сработала.

Наконец-то я обнаружил, что это произошло из-за конфликта между установкой Msys (Installed, когда я установил утилиту командной строки git). Если ваш системный путь содержит какие-либо каталоги с версией Msys, удалите такие записи пути и повторите попытку. Похоже, cygwin пытается выполнить исполняемые файлы из установки Msys, а .dll обнаруживает missmatch.

Ответ 10

В моем случае переменная PATH в переменных среды была неправильной. Я переместил cygwin немного раньше в пути (убедившись, что он установлен перед git path). Таким образом, cygwin dll был в пользу git dll.

Например; Путь к C:\Program Files\Git\usr\bin;C:\cygwin\bin;... был изменен на C:\cygwin\bin;C:\Program Filenter code herees\Git\usr\bin;...

Среда была Win7x86, и для того, чтобы использовался обновленный путь, требовалась перезагрузка.

Ответ 11

У меня была такая же ошибка, когда я пытался перейти на git-репозиторий из Visual Studio 2017, используя скрипт, начинающийся С#!/Bin/sh из

[repo folder]\.git\hooks\commit-msg

Сообщение об ошибке:

1 [main] sh (11460) c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\commonextensions\microsoft\teamfoundation\team explorer\Git\usr\bin\sh.exe:
 *** fatal error - cygheap base mismatch detected - 0x14DD408/0x12AD408.This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facilityand delete all but the most recent version.
The most recent version *should*reside in x:\cygwin\bin, where 'x' is the drive on which you haveinstalled the cygwin distribution.
Rebooting is also suggested if youare unable to find another cygwin DLL.      

Я пробовал разные решения выше без успеха

Для решения этой проблемы я скопировал содержимое с:

C:\Program Files\Git\usr\bin

в

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

Проблема на моем компьютере произошла из-за несоответствия версий на sh.exe, и копирование этих файлов решило проблему

Ответ 12

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

Ответ 13

Я решил эту проблему, временно отключив Защитник Windows и повторив попытку - подробности см. в https://superuser.com/a/1047031/158243.

Ответ 14

Так как это базовое несоответствие, вы можете попробовать переустановить:

git rebase <branch>