Разница между msysgit и Cygwin + git?

В чем разница между msysgit и Cygwin + git?

Сейчас я использую msysgit, но мне не нравится Git Bash (вы не можете изменить размер или скопировать / вставить), поэтому я думаю подумать о переходе на Cygwin, потому что тогда я мог бы использовать mintty.

9 ответов

Решение

Изменить 2018:

Начиная с моего ответа 2010-2012-2014 годов, в 2015 году Git для Windows использует msys2, как я подробно описал здесь.

См. Больше в разделе " Как msys, msys2 и msysgit связаны друг с другом?".


Изменить (еще 2 года спустя: октябрь 2014 г.)

Йоханнес Шинделин только что объяснил (октябрь 2014 г.), что msysgit постепенно исчезает:

Теперь у нас есть облегченный Git для Windows SDK - по сути, это стандартная система MinGW/MSys, управляемая через менеджер пакетов mingw-get.

Мы решили просто отказаться от имени "msysGit" (а также от организации GitHub с тем же именем) и:

  • работать над Git для Windowsсоответствующей организацией GitHub),
  • используя имя "Git for Windows" для установщика, ориентированного на "конечных пользователей", и
  • использование имени "Git для Windows SDK" для среды разработки, предназначенной для разработчиков Git для Windows).

Обновление 2 года спустя: июль 2012

Msysgit здесь, чтобы остаться, и если вам не нужно добавить несколько сотен МБ для Cygwin, вам не нужно Cygwin просто использовать Git на Windows.
И если вы хотите получить доступ к GitHub, вы получите один пакет ("Git для Windows" + ключи ssh, зарегистрированные для вас в вашей учетной записи GitHub + хороший графический интерфейс) с GitHub для Windows.

И Git, и msysgit находятся на GitHub.
Страница http://msysgit.github.com/ четко иллюстрирует разницу между:

Git для Windows, логотип<---------->Логотип MsysGit
"Git для Windows": чистые пользователи Git | "MsysGit": для тестировщиков, разработчиков, сопровождающих

Смотрите также FAQ по msysgit:

Что это за "MSys" вещь в "MSysGit"?

MSys - это среда для Windows, предлагающая оболочку Unix-типа и интерпретатор Perl. Поскольку многие части Git по-прежнему не встроены в C, а вместо этого представляют собой сценарии оболочки и Perl, Git для Windows нужна такая среда.

Поэтому мы поставляем Git для Windows с очень минимальной версией MSys.

MSys также требуется для сборки Git, так как мы повторно используем те же настройки Unix-типа, что и в Git. Мы поставляем более полную среду MSys, включая GCC, в качестве среды сборки (которая, следовательно, называется "msysGit").

Мы компилируем Git как чистую программу MinGW, то есть программу без каких-либо зависимостей от ссылок, кроме стандартных библиотек Windows.
Поэтому, если вам не нужно использовать какие-либо части Git, которые по-прежнему реализованы только в виде сценариев оболочки или Perl, вы можете без труда запускать обычный git.exe.


Оригинальный ответ: июнь 2010

a / Вы можете изменить размер и скопировать-вставить в Git bash, как и в любой другой оболочке Windows.

b / Вы, вероятно, используете "Git для Windows", а не msysgit. Из вики:

  • msysGit - это среда разработки для компиляции Git для Windows. Это полностью, в том смысле, что вам просто нужно установить msysGit, а затем вы можете собрать Git. Без установки какого-либо стороннего программного обеспечения.
  • Git для Windows - это установщик, который устанавливает Git - и только Git.

Легко увидеть разницу:

  • установщики для Git имеют префикс Git-,
  • установщики msysGit имеют префикс msysGit-.

Другим показателем является то, что установщики msysGit выпускаются в двух вариантах: fullinstall и netinstall.
Кроме того, msysGit не устанавливается в C:\Program Files по умолчанию.
Но msysGit поставляется с gccКомпилятор GNU C

c/ От MSysGitHerald10:

Помните:

  • MinGW действительно очень тонкий слой времени компиляции по сравнению с Microsoft Runtime; Таким образом, программы MinGW - это настоящие программы для Windows, без понятия путей в стиле Unix или таких тонкостей POSIX, как fork() вызов.
  • MSys, напротив, является уменьшенной версией Cygwin (старой версии), единственной целью которой является обеспечение достаточного уровня POSIX для запуска bash.

И это не всегда приветствуется

При работе в Windows мне не нравится, что msysGit, как следует из названия, зависит от MSYS и инструментов из мира Unix. Я считаю, что все программы в дистрибутиве Git должны стать двоичными файлами, скомпилированными для конкретной платформы, и не полагаться на интерпретаторы оболочки или сторонние языки, такие как Tcl/Tk.

Хотя это намного лучше, чем первая установка Git on Cygwin от 2007 года.

Это ответ с 2017 года...

Принципиальное техническое отличие состоит в том, что все программы cygwin зависят от cygwin1.dll; но в то же время это наименее интересный вариант для конечного пользователя, поскольку он должен быть почти полностью прозрачным. Основные различия, которые я обнаружил, не столько между версиями git, сколько между средой cygwin и средой msys/mingw. Вот некоторые различия, которые я нашел:

  • Обработка ACL. То, как новые (после 2015 года) cygwins обрабатывают списки контроля доступа NTFS, может быть очень опасно. По умолчанию диски Windows монтируются с активной опцией acl. Cygwin пытается имитировать разрешения POSIX, перетасовывая и злоупотребляя записями ACL, что делает невозможным доступ через собственные программы Windows. Кроме того, возможно, что доступ к файлам резко замедляется в многопользовательских многодоменных (т. Е. Коммерческих или институциональных) установках из-за доступа к сети, потому что для определения пользователя и разрешений могут потребоваться запросы сервера домена для каждого файла.

    msys монтируется с -noacl опция по умолчанию. Делая это в cygwin, вы, похоже, избегаете этих проблем.
  • Скорость. В настоящее время я работаю в хранилище с файлами 100k (не спрашивайте). git status со всем соответствующим содержимым диска в кеше занимает 4,7 секунды с cygwin и 0,4 секунды с msys git. Я не уверен, какая часть уровня совместимости cygwin тормозит - блокировки, вилки, файловая система, IPC... все они являются кандидатами.
  • Потенциально имена файлов. Я не исследовал проблему, но подозреваю, что git (и другие инструменты), предназначенные для окон (например, msys git), могут лучше обрабатывать имена файлов Windows. Под Cygwin нужно старательно конвертировать имена файлов через cygpath между двумя мирами. Это будет играть важную роль, когда сценарии и т. Д. Взаимодействуют с программами Windows.

Редактировать: возможно, не очевидно, что с некоторыми незначительными изменениями можно обмениваться общими настройками для git (но не только для git) между cygwin и Msys2. Если я правильно помню, хорошим способом является установка переменной среды HOME в системных настройках Windows; тогда и Msys2, и Cygwin будут использовать этот каталог и, следовательно, одни и те же точечные файлы, среди них ~/.gitignore, Это делает переключение между терминалами Cygwin и Msys2 довольно безболезненно (подумайте ~/.inputrc, ~/.bashrc, ~/.profile...).

cygwin + git был единственным способом заставить git работать в тот день. Теперь, когда msysgit есть, я не вижу смысла использовать cygwin.

Я согласен, Git Bash не так хорошо.. так что я делаю, это

  1. Поместите git в путь и используйте командную строку окна, когда мне нужна командная строка
  2. У меня установлен git с черепахой, когда я хочу иметь графический интерфейс для моего git

MSysGit поставляется с очень старой версией SSH. Пропускная способность в моей системе была около 10 мбит. Если вас не интересует скорость клонирования, это не влияет на вас. Исправление заключается в том, чтобы либо запустить Cygwin Git, либо заменить SSH, установленный в MSysGit.

Реализация bash в msysgit старая. Тем не менее, я использую vim при редактировании, и это прекрасно работает. Что касается вырезания и вставки, я часто прибегаю к SHIFT+ALT+[пробел], E, M или любым другим клавишам, чтобы пометить текст, который я хочу. Не идеально, но делает работу достаточно хорошо, потому что я не слишком много копирую и вставляю.

Теперь я начал запускать Ubuntu на той же машине через VirtualBox. Благодаря бесшовному режиму и общим папкам, я могу воспользоваться новейшей версией bash и быстрым Git.

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

Я попробовал Cygwin и мне не понравилось. Решение с виртуальной коробкой намного лучше, если вам не хватает msysgit.

Текущая версия git на cygwin - 1.7.5.1, что очень и очень актуально (май 2011 г.).

Я не вижу причин (пока) использовать что-либо еще, хотя я рассматриваю возможность попробовать msysgit (также называемый "Git for Windows") (в настоящее время версия 1.7.4).

Это ответ с 2018 года...

Git для Windows основан на MSYS2.

MSYS2 был начат с идеи перезапустить проект MSys, часто обновляя его с помощью Cygwin, и просто придерживаясь духа MSys, чтобы обеспечить очень урезанный слой POSIX, по сути, минимальную версию Cygwin. MSYS2 также использует менеджер пакетов (pacman) и поддерживает эти пакеты в актуальном состоянии.

..

Среда выполнения MSYS2 - это урезанная, слегка измененная среда выполнения Cygwin, работающая поверх ядра Windows, в то время как среда выполнения Linux - это ядро ​​Linux, работающее как отдельная ОС.

https://github.com/git-for-windows/git/wiki

Cygwin предоставляет библиотеку времени выполнения под названием cygwin1.dll, которая обеспечивает уровень совместимости POSIX, где это необходимо. MSYS2-вариант этой библиотеки называется msys-2.0.dll и включает в себя следующие изменения для поддержки использования собственных программ Windows: Чем MSYS2 отличается от Cygwin?

Dependency Walker Git Bash

cygwin видит ваши локальные файлы в формате windows, тогда как git-bash видит их в формате unix. Если вы извлекаете файлы в git-bash, а затем запускаете git status в оболочке cygwin, git считает, что вы изменили каждую строку в репозитории, если вы запускаете git status в оболочке git-bash, то изменяются только те файлы, к которым вы прикоснулись.

Если вы планируете делать в git bash больше, чем просто команды git, я бы предложил Cygwin с git.

Если вы не планируете ничего делать, кроме команд git в git bash, то а) конечно, используйте git bash, но б) почему бы просто не использовать Git GUI?

Git bash не так уж плох, НО бывают случаи, когда мне нужно использовать Cygwin для вещей, которые просто не работают в git bash. (Perl CPAN, например. Инструменты XSL для другого.) Что кажется действительно глупым - использовать две совершенно разные реализации командной строки bash.

Msysgit получил ряд исправлений для решения специфических проблем Windows, таких как нечувствительность к регистру файловой системы, блокировка файлов и т. Д. Возможно, плохая идея использовать версию cygwin. Если у вас есть cygwin в вашей системе, я бы посоветовал вообще не устанавливать git и, желательно, не делиться средами msysgit или cygwin из того же PATH.

Другие вопросы по тегам