Git под windows: MSYS или Cygwin? - PullRequest
       48

Git под windows: MSYS или Cygwin?

80 голосов
/ 24 апреля 2009

Я планирую перенести свои проекты в git, и в данный момент мне интересно, какой из них лучше и / или наиболее стабилен под Windows.

Из того, что я понял, у меня в основном есть 2,5 варианта:

  1. MSYSgit
  2. мерзавец под Cygwin
  3. (он же 2.5) MSYSgit из приглашения Cygwin (учитывая, что Cygwin git уже установлен).

Примечание: IMO Cygwin сам по себе является большим плюсом, так как вы можете иметь доступ почти ко всем инструментам командной строки * nix, поскольку в MSYSgit bash вы имеете доступ только к довольно небольшому подмножеству этих инструментов. *

Учитывая это, какой вариант вы бы предложили?

Ответы [ 13 ]

60 голосов
/ 24 апреля 2009

Редактировать (еще 2 года спустя: октябрь 2014)

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

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

Мы решили просто отказаться от имени «msysGit» (а также GitHub org с таким же именем ) и работать над Git для Windows соответствующей GitHub org) и использованием имени «Git для Windows» для установщика, нацеленного на «конечных пользователей» и «Git для Windows SDK» для среды разработки, ориентированной на Git для разработчиков Windows) .


Редактировать (3 года спустя: апрель 2012 г.)

MsysGit (теперь на GitHub ) - это путь, если вы хотите легкий быстрый старт в мире Git: распакуйте архив, запустите git-cmd.bat или git-bash.bat и все готово.
Последняя версия (1.7.10, апрель 2012 г.) теперь включает поддержку UTF-8 , также , включенную в GitExtension . Не забудьте установить для autocrlf значение false .

Если вам действительно не хватает всех других команд unix, а не пакетов с msysgit, просто скачайте релиз GoW ​​(Gnu для Windows) , метко названный «Легкая альтернатива Cygwin».
Я имею в виду: 130 Unix-команда s ...

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


Июнь 2012: если вы хотите взаимодействовать с GitHub , теперь у вас есть http://windows.github.com (см. Также « Проектирование GitHub для Windows »).
Он не только настроит ключи ssh для вас (и добавит сгенерированный открытый ключ в ваш профиль GitHub), но также установит для всех операций git ... MsysGit.


Оригинальный ответ (апрель 2009 г.)

У меня нет проблем с последней версией MsysGit:
Я использую option 2 , что означает, что я только добавляю каталог git \ bin в переменную окружения PATH, но не переопределяя некоторые встроенные инструменты Windows.

Мне удалось определить внешние инструменты, такие как Notepad ++ и WinMerge (или DiffMerge)

Я успешно запустил сценарии, такие как svn2git , потому что из MsysGit1.6.2 + он включает команду 'git svn'.

И, наконец, я с нетерпением жду MsysGit1.6.2.3, поскольку он будет включать, наконец, команду git filter-branch ! (медленная версия filter-branch, но все же).

Для команды Unix я предпочитаю установить пакет coreutils *1102* GnuWin32 и использовать их только тогда, когда они мне нужны.

В общем, я не использую слой Cygwin, и мне удалось очень хорошо запустить Git в его версии для Windows, MsysGit.

15 голосов
/ 11 февраля 2012

Да. Старый вопрос Новый ответ:

Мы используем MSYSgit уже около 2 лет в широком развертывании. Скорость передачи данных с локального сервера репозитория git была ограничена менее 5 МБ / с. Ранее проведенное расследование показало, что проблема заключалась в том, что разработчики MSYS работали в Windows XP и Windows 7, ограничивая безопасность подключений из командной строки / оболочки bash. На самом деле это не является проблемой.

Я обнаружил в блоге Даррелла Мозинго и протестировал клон большого репо (много ГиБ), используя только установку Cygwin. Скорость передачи была в диапазоне 30 МБ / с. Проблема в том, что MSYSgit использует античный двоичный файл OpenSSH с 2007 года.

С этой целью, пока это не будет исправлено, я сейчас рекомендую перейти на Cygwin (хотя версия git немного отстает). Я также обнаружил, что Cygwin более стабилен и менее вероятно, что Perl исчерпает память.

9 голосов
/ 24 апреля 2009

Я баловался с использованием версий git для MSYS и Cygwin, и, если честно, я не нашел ни одного опыта, особенно хорошего. Я просто не думаю, что Git действительно готов для Windows.

Тем не менее, одна проблема, которую я обнаружил с версией MSYS, заключается в том, что она преобразует окончания строк в ваших (недвоичных) файлах из стиля UNIX (перевод строки) в стиль DOS (возврат каретки / line- кормить). Вы можете считать это ошибкой или функцией, но нет способа изменить поведение, которое я мог найти. (РЕДАКТИРОВАТЬ: установить переменную конфигурации core.autocrlf на false. Спасибо Брайан.)

OTOH, версия git для MSYS имеет некоторые функции графического интерфейса, которые недоступны в версии cygwin, если вы не хотите устанавливать и запускать весь X-сервер. (Спасибо, Джос, за подтверждение этого.)

У меня сложилось впечатление, что версия MSYS более популярна, хотя это может быть связано с тем, что вам не нужно устанавливать экосистему cygwin для ее использования. (И я согласен, Cygwin чрезвычайно полезен.)

Лично я бы выбрал Bazaar или Mercurial , которые лучше поддерживают Windows IMO.

7 голосов
/ 24 апреля 2009

Как Cygwin, так и Msys Git работают достаточно хорошо для обычных сценариев использования. Если вы хотите использовать такие скрипты, как git-svn, лучше использовать Cygwin. Как старые пользователи Windows, которые наконец-то перешли на Linux, я могу с уверенностью сказать, что Cygwin - это великое благо, которое стоит иметь само по себе.

Контекст важен, хотя; что это за проекты? Кем они используются? И т.д.

6 голосов
/ 18 марта 2010

Я также протестировал оба мира (CygWin и MSysgit), мой опыт также показывает, что в MSysgit bash есть некоторые недостатки. Не удалось успешно запустить git stash, пока Cygwin изящно обрабатывал его в том же репозитории git.

Глубокий анализ еще не сделан, хотя ...

4 голосов
/ 12 сентября 2009

В настоящее время я использую Msysgit вместе с TortoiseGit.

Пользовательский интерфейс MsysGit мне не очень нравится, поэтому я использую знакомый инструмент, такой как TortoiseGit, и при работе с командной строкой (большую часть времени) я использую двоичный файл git из Msysgit

3 голосов
/ 05 марта 2011

Я бы порекомендовал msysgit. Особенно, если он используется с Git Extensions : он обеспечивает простой способ настройки среды: инструменты редактора / сравнения / слияния и позволяет выполнять расширенные операции git из пользовательского интерфейса.

1 голос
/ 06 апреля 2011

Новый ответ на старый вопрос ...

Я использую git 1.7.3 из оболочки Windows 7 cmd, и он прекрасно работает. Я использую сочетание командной строки git и git gui, и оба месяца работали нормально. У нас действительно были проблемы с возвратом каретки / переводом строки, которые усугублялись при добавлении разработчиков Mac в команду, но они были решены с помощью ...

core.autocrlf=true
core.safecrlf=false

Не говорю, что вы не должны использовать * nix-y оболочку, просто в этом нет необходимости.

1 голос
/ 17 ноября 2009

Я использовал и Cygwin Git, и Msysgit с Windows. Я бы предложил использовать Cygwin + Git. Cygwin 1.7 (в настоящее время в бета-версии) устраняет главный нюанс (по крайней мере для меня) при использовании git gui и gitk. Более ранние версии Cygwin открывали десятки окон cmd каждый раз, когда я что-то делаю в git-gui или gitk. Это было решено в 1.7. Мощная оболочка Cygwin также содержит много полезных свойств терминала linux.

Тем не менее, Msysgit эволюционировал совсем немного и действительно полезен в Windows. Я столкнулся с парой проблем, хотя.

Проблема с разрешением: некоторые файлы, созданные в Windows, имели режим 755, который был преобразован в 644 при использовании Msysgit. Это будет отображаться как измененные файлы. Проверка должна исправить эту проблему.

CRLF: Все неуловимый CRLF, как обычно, создает проблемы в Windows. Msysgit может сообщать файлы как измененные. Это можно исправить, выбрав «Оставить окончания строк без изменений» (забыл точный текст) при установке Msysgit.

Daemon: И да, мне все еще сложно настроить git daemon в Msysgit.

1 голос
/ 12 мая 2009

Я столкнулся с серьезными ошибками в реализации MSys cygwin: некоторые команды, особенно rebase, были весьма подвержены сбоям. Cygwin's был гораздо более стабильным для меня.

Тем не менее, это было месяц назад, могло бы улучшиться с тех пор.

...