Git під Windows: MSYS чи Cygwin?


80

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

З того, що я збираю, я в основному маю 2,5 варіанти:

  1. MSYSgit
  2. git під керівництвом Cygwin
  3. (aka 2.5) MSYSgit із запиту Cygwin (враховуючи, що Cygwin git вже встановлено).

Примітка: IMO Cygwin сам по собі є великим плюсом, оскільки ви можете мати доступ майже до всіх інструментів командного рядка * nix, як і у випадку з MSYSgit bash, ви маєте доступ лише до досить невеликої підмножини цих інструментів.

З огляду на це, який варіант ви б запропонували?

Відповіді:


60

Редагувати (ще 2 роки потому: жовтень 2014 р.)

Йоганнес Шінделін щойно пояснив (жовтень 2014 р.), Що msysgit поступово припиняється :

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

Ми вирішили просто відмовитись від назви "msysGit" (а також однойменної організації GitHub ) і працювати над Git для Windowsвідповідною організацією GitHub) , а для інсталятора використовувати назву "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 ...

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


Червень 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 я віддаю перевагу інсталювати пакет coreutils GnuWin32 і використовувати їх лише тоді, коли вони мені потрібні.

Отже, загалом, я не використовую рівень Cygwin, і мені вдалося дуже добре запустити Git у своєму випуску на базі Windows MsysGit.


Я також використовую p4merge, що досить класно. Я читав, що є проблеми з іменами файлів git & unicode.
Бенджол,

Дякуємо за посилання на запитання про налаштування core.editor. (Я намагався використовувати Notepad ++ з командним рядком , як -nosession і -multiInst)
MBX

Ця відповідь насправді не відповідає, чому хтось би використовував одне над іншим. Є кращі відповіді нижче IMO
Себастьян Мартін

@SebastienMartin, ви повинні згадати про це в ОП (Джос) у такому випадку. В іншому випадку він не буде повідомлений про кращу відповідь, яку він повинен вибрати.
VonC

@SebastienMartin Я оновив цю стару відповідь більш актуальною інформацією.
VonC

15

Так. Старе питання. Нова відповідь:

Ми використовуємо MSYSgit вже близько 2 років у великому розгортанні. Швидкість передачі даних із локального сервера сховища git була обмежена менш ніж 5 Мб / с. Раніше розслідування проблеми вказало, що проблема полягала в тому, що розробники MSYS працювали в ОС Windows XP та Windows 7, обмежуючи з'єднання з командного рядка / оболонки bash. Насправді, це не проблема.

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

З цією метою, поки це не буде виправлено, я зараз рекомендую перейти на Cygwin (хоча версія git трохи відстала). Я також виявив, що Cygwin є більш стабільним і з меншою ймовірністю для perl закінчується пам'ять.


Схоже, MinGW використовує OpenSSH 5.4 з 2010 року
Стівен Пенні,

9

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

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

ОТОЖ, версія gys MSYS має деяку функціональність графічного інтерфейсу, яка недоступна у версії cygwin, якщо ви не хочете встановити та запустити цілий X-сервер. (Дякую Джосе за підтвердження цього.)

Я склав враження, що версія MSYS є більш популярною, хоча це може бути тому, що для її використання не потрібно встановлювати екосистему cygwin. (І я згоден, cygwin надзвичайно корисний.)

Особисто я хотів би скористатися або Bazaar, або Mercurial , кожна з яких має кращу підтримку Windows IMO.


3
Bazaar також був моїм рішенням питання про Git для Windows. Хе.
Instance Hunter

9
Ви можете вимкнути рядок, що закінчує переклад. Вам просто потрібно встановити для core.autocrlf значення false.
Брайан Кемпбелл,

1
В даний час ми перевіряємо наші варіанти вибору DCVS. Mercurial є у списку. Однак вартість розгалуження, особливо для дуже великих проектів, є цілком відхиленою. Dist Cygwin постачається з інтерфейсом графічного інтерфейсу (за рахунок запуску X-сервера). Однак я не зовсім впевнений, яку величину це додає.
joce

3
Я використовую версію msys і не стикаюся з проблемами.
Ікке,

2
Я думаю, що остання версія msys просить вас налаштувати спосіб обробки закінчень рядків під час його встановлення.
Кен Лю

7

І Cygwin, і Msys Git працюють досить добре для звичайних випадків використання. Якщо ви хочете використовувати такі сценарії, як git-svn, краще поставити Cygwin. Як старі користувачі Windows, які нарешті перейшли на Linux, я точно можу сказати, що Cygwin - це велике благо і яке варто мати саме по собі.

Проте контекст важливий; що це за проекти? Хто ними користується? І т.д.


2
Ми говоримо про досить великий проект (32 КБ + вихідні файли), розроблений досить невеликою командою (~ 10 програм). Не всі з них є досвідченим середовищем w / * nix, але простота git для щоденного використання виглядає багатообіцяючою. Ми також плануємо багато використовувати розгалуження, наприклад, один список змін P4 <=> Одна гітка git. Тільки з цієї причини git набагато цікавіший, ніж Hg, наприклад. Я побоююся, що Cygwin проти MSYS полягає в тому, що версія Cygwin не є настільки актуальною, як версія MSYS.
joce

6

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

Поки глибокого аналізу ще не зроблено ...


4

В даний час я використовую Msysgit разом з TortoiseGit.

Інтерфейс користувача MsysGit мені не дуже подобається, тому я використовую такий знайомий інструмент, як TortoiseGit, і, працюючи над командним рядком (більшу частину часу), використовую двійковий файл git від Msysgit


3

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


1

Я зіткнувся з серйозними помилками в реалізації cygwin від MSys: деякі команди, особливо rebase, були досить схильні до відмов. Кігвін був для мене набагато стабільнішим.

Тим не менш, це було місяць тому, можливо, з того часу покращилося.


3
"Cygwin MSys"? ви не маєте на увазі Git MSys?
joce

2
@ Алекс Гонтмахер Можливо, він стабільніший, але також є повільним до смерті. Дивіться це повідомлення: stackoverflow.com/questions/6724471/…
WinWin

1

Я використовував як Cygwin Git, так і Msysgit з Windows. Я б запропонував використовувати Cygwin + Git. Cygwin 1.7 (на даний час у бета-версії) вирішує основні нюанси (принаймні для мене) під час використання git gui та gitk. Раніше версії Cygwin відкривали 10-ти cmd-вікна кожного разу, коли я роблю щось у git-gui або gitk. Це було розглянуто в 1.7. Потужна оболонка Cygwin також привносить багато корисних елементів терміналу Linux.

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

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

CRLF: весь невловимий CRLF, як зазвичай, створює проблеми в Windows. Msysgit може повідомляти файли як змінені. Це можна виправити, вибравши "Залишити закінчення рядків без змін" (забувши точний текст) під час встановлення Msysgit.

Daemon: І так, мені все ще важко встановити git daemon в Msysgit.


1

Нова відповідь на старе запитання ...

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

core.autocrlf=true
core.safecrlf=false

Не кажучи, що ви не повинні використовувати оболонку * nix-y, просто це не потрібно.


0

У мене є застереження щодо CygWin тому що я хочу лише git, а не будь-який інший інструмент, в який Cygwin хоче вкластися. Зазвичай ви хочете, щоб ваш комп'ютер з Windows працював як Windows, а CygWin хоче ляпати щось зовсім інше. Шльопати функціонал * nix лише для ударів - не можна.

Справа в тому, що якщо я коли-небудь захочу працювати з * nix, як командний рядок, я переходжу до своєї машини Linux і замість цього працюю на цьому комп’ютері. Віртуальні комп’ютери та віддалені робочі столи працюють сьогодні як привабливість і доступні для розробників.

Дійсно, для того, щоб ви користувались CygWin, має бути законна причина. Якщо це лише для використання git, я б запропонував вам використовувати MSysGit замість цього, що є моїм уподобанням. Це дуже добре працює з пакетами інструментів gitk та git-gui. Я працював над Eclipse та Visual Studio за допомогою msysgit, і це працює як шарм.

Єдине, чого я зараз чекаю, це повністю працюючий клон Черепахи для git .


І, здається, найменш станом на 13.03.17 Cygwin перебуває на рівні 2.8.3 git, і у мене було кілька проблем з Perl під час оновлення. Git Bash MinGW знаходиться на рівні 2.12.
Марк

0

У Windows є один сценарій, коли вам просто потрібно використовувати Git через Cygwin: Це коли ви хочете використовувати Git проти SVN-сервера, який очікує версії клієнта SVN вище 1,5. Існують хуки попереднього фіксації SVN, які блокують коміти, коли немає аргументу 'mergeinfo' - а аргумент 'mergeinfo' є типовим у SVN лише з версії 1.5. Проблема msysGit полягає в тому, що він побудований для попередньої версії SVN (1.4.6), тому в цьому випадку ви не можете успішно здійснити коміт. Але це можливо з Cygwin's Git, оскільки він побудований для нових версій SVN.


0

Якщо ви просто хочете виконати такі прості дії, як push / pull / розгалуження, ви можете спробувати SourceTree від Atlasian. Дуже простий і зрозумілий інтерфейс для команди Git. Однак він має короткий час.

Якщо вам потрібно скористатися інструментом командного рядка git, просто завантажте інструмент Git для Windows. Цього має бути достатньо, якщо ви не почнете шукати сценарії bash.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.