Git под окнами: MSYS или Cygwin?

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

Из того, что я собираюсь, у меня в основном есть 2.5 варианта:

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

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

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

Ответ 1

Редактировать (еще 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: unzip архив, запуск 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, как указано ниже incrementor в его ответ.


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


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

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

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

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

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

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

Итак, в целом я не использую слой Cygwin и очень успешно запускаю Git в своем выпуске MsysGit на базе Windows.

Ответ 2

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

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

Я обнаружил публикацию блога Darrell Mozingo и протестировал клон большого (много GiB) репо, используя только установку Cygwin. Скорость передачи была в диапазоне 30 миль/ч. Проблема в том, что MSYSgit использует антикварную двоичную версию OpenSSH с 2007 года.

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

Ответ 3

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

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

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

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

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

Ответ 4

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

Контекст важен; какие проекты? Кем они используются? Etc.

Ответ 5

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

Еще нет глубокого анализа, хотя...

Ответ 6

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

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

Ответ 7

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

Ответ 8

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

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

Ответ 9

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

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

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

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

Daemon: И да, мне все еще трудно установить демона Git в Msysgit.

Ответ 10

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

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

core.autocrlf=true
core.safecrlf=false

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

Ответ 11

У меня есть оговорки в отношении CygWin, потому что я хочу только git, а не любые другие инструменты, которые Cygwin хочет засунуть Обычно вы хотите, чтобы ваш компьютер Windows работал как компьютер с Windows, и CygWin хочет похлопать что-то совершенно другое. Похлопывание по функциональности * nix только для ударов не должно идти.

Дело в том, что если я когда-либо захочу работать с командной строкой * nix, я бы перешел на свою машину Linux и работал на этом компьютере. Виртуальные компьютеры и удаленные рабочие столы работают как шарм в настоящее время и доступно для разработчиков.

На самом деле для вас должна быть законная причина использовать CygWin. Если это просто для использования git, я предлагаю вместо этого использовать MSysGit, что является моим предпочтением. Он отлично работает с инструментами gitk и git -gui, которые в комплекте. Я работаю над Eclipse и Visual Studio с помощью msysgit и работает как шарм.

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

Ответ 12

Существует один сценарий под Windows, где вы просто имеете, чтобы использовать Git через Cygwin: это когда вы хотите использовать Git для SVN-сервера, который ожидает, что версии SVN-клиентов будут выше, чем 1,5. Существуют SVN-блокировки pre-commit, которые блокируют, когда нет аргумента 'mergeinfo', и аргумент 'mergeinfo' по умолчанию используется в SVN только с версии 1.5. Проблема с msysGit заключается в том, что она построена против более старой версии SVN (1.4.6), поэтому вы не можете успешно выполнить в этом случае. Но это возможно с Cygwin Git, поскольку он создан против новых версий SVN.

Ответ 13

Если вы просто хотите сделать простые действия, такие как push/pull/branching, вы можете попробовать SourceTree от Atlasian. Очень простой и понятный интерфейс для команды Git. Однако у него мало времени.

Если вам нужно использовать инструмент командной строки Git, просто получите инструмент Git для Windows. Этого должно быть достаточно, если вы не начнете искать сценарии bash.