Ответ 1
EDIT: Итак, 2016 год, через шесть лет, когда я написал оригинальный ответ ниже. Я использовал git и меркуриально в течение нескольких лет, и я развиваюсь на Mac уже несколько лет. Я привык и удобен с использованием git в командной строке, но для повседневной работы я использую SourceTree от Atlassian. Это не реклама, просто примечание для обновления этого ответа. SourceTree - это двойная абстракция: тот же ui для git/hg, и тот же ui для Windows/Mac. Когда вам приходится часто менять платформы и проекты, это становится очень привлекательным.
Написав руководство по настройке как клиента, так и сервера для git в Windows, у меня есть довольно хорошее представление о том, что можно ожидать. Кроме того, мой основной репозиторий (папка .git
) составляет ~ 260 МБ источника, поэтому это действительно не тривиальный тест производительности для повседневной работы git в Windows.
Мое общее впечатление состоит в том, что git в окнах очень быстро для большинства ситуаций, с которыми можно столкнуться, с одним действительно большим исключением: git gui blame -C -C
. По умолчанию git не будет винить файлы за пределами границ переименования файлов, а дополнительные аргументы -C -C
должны быть переданы, чтобы это произошло, но тогда все может действительно замедлить работу. Для создания полной аннотации одного из наших более ~ 20 kloc исходных файлов требуется 17 минут на современном оборудовании. Эта задержка может действительно нарушить вашу концентрацию.
Относительно cygwin:
Я только один раз пробовал это, а не для чего-то значительного. Я действительно хотел найти собственное решение. По всем данным, git на cygwin работает достаточно хорошо.
Относительно TortoiseGit
Фрэнк Ли сделал огромную работу, привнеся теперь знакомый пользовательский интерфейс в мир git. TortoiseGit запущен очень быстро, потому что большая часть пользовательского интерфейса была доступна от TortoiseSVN (и других инструментов, таких как TortoiseMerge), и я много работал с этим интерфейсом. В общем, это позволяет быстро перейти на git, если вы знакомы с TortoiseSVN. Разработчик пошел на большие усилия, чтобы использовать термины из мира TortoiseSVN и сопоставить их с командами git. Например, реверс действительно выполняетgit checkout <file>
под капотом.
В общем, работа с git таким образом была довольно плавной, и я должен признать, что узнал git при использовании интерфейса TortoiseGit: и нужно признать, что это было помехой для моего образования. Средство просмотра журналов TortoiseSVN не работает для рабочего процесса распределенных vcs (он работает достаточно хорошо, вы используете git, как если бы это был SVN), и вы только узнаете об этом позже, потому что проблемы возникают только тогда, когда есть много, много ветвей развития (инструмент gitk
намного лучше справляется с этим дисплеем). Другая проблема заключается в том, что даже после использования TortoiseGit в течение многих месяцев я до сих пор не знал даже самых простых команд git. В TortoiseGit нет ничего плохого, и ошибки возникают исправно, быстро, когда они происходят; основной проблемой, по-видимому, является проблема дизайна (возможно, более одного) в пользовательском интерфейсе, что разработчики gitk
и git gui
разработали из-за более продолжительной истории развития или более глубокого знания идиоматических git использование или что-то в этом роде.
Что касается использования командной строки:
MSYS git команда разработчиков - это те, кому действительно следует поблагодарить за то, что они даже потрудились выполнить всю свою работу, и без их поддержки, вероятно, ветка mww git никогда бы не была объединена с основной линией.
Теперь я начал использовать msysgit, как и в оболочке git Bash, как мой единственный git интерфейс в течение нескольких недель. У меня сложилось впечатление, что, хотя первоначальное обучение кажется более трудным, как только это знание будет достигнуто, все остальное станет легче. Эта ссылка является, на мой взгляд, одной из действительно лучших ссылок, изучающих git в командной строке.
Говоря как пользователь git в Windows и исходящий из расширенного опыта с использованием интерфейса TortoiseGit для git, это сводка моего рабочего процесса, которая охватывает > 95% того, что необходимо (все в git Bash, а не командная оболочка Windows (cmd)):
-
Проверить наличие изменений
git статус
-
Отключить ветвь
git checkout some-feature-branch
-
Fetch
git fetch
-
Показать журнал (
&
отделяет процессgitk
от оболочки, так что оболочка не ждет закрытияgitk
перед тем, как разрешить больше команд)gitk &
-
Commit: либо
-
Простая фиксация:
git commit -a -m "Это мое сообщение с сообщением"
-
Сложные, множественные последовательные фиксации:
git gui
-
-
Нажмите на ветку: мастер
git нажмите начало оригинала
-
Слияние (например, после Fetch)
git merge origin/master
Мне еще не нужно было разрешать конфликт, но я подумаю, когда придет время (комментарии приветствуются:).
EDIT: для разрешения конфликтов kdiff3 - это путь. Настройка проста, и все от простого до трехстороннего слияния работает надежно и быстро.
Выводы
-
git в Windows полнофункциональный и работает как рекламируемый и не ограничен Windows.
-
Производительность, как правило, очень хорошая, но всеобъемлющие большие обвинения могут быть медленными.
-
Интерфейс TortoiseGit является соблазнительным, но в конечном итоге неудовлетворительным: вы должны попытаться изучить git в командной строке. Я сделал оба, и этот маршрут более эффективен.