2008-12-05 2 views
39

Я использую SVN прямо сейчас, и я использовал CVS и VSS в прошлом. SVN является любимым в моих книгах, но я много слышал о git. Из людей, которые использовали git, каковы плюсы и минусы вашего опыта?Каковы ваши плюсы и минусы git после его использования?

+1

Это хороший вопрос, стыдно, что он закрыт. Один из реальных минусов git здесь заключается в том, что его сложнее использовать, когда вам нужно получить очень большой репозиторий с огромной историей фиксации, просто чтобы увидеть источник или сделать простой патч. В svn вы напрямую получаете источники последней главы, и вы можете возобновить загрузку, если соединение завершилось неудачей. В git даже с `--depth 1` вы получаете огромные накладные расходы на другие вещи, и если вы находитесь на нестабильном и медленном соединении, может быть даже невозможно получить его – Petr 2014-07-30 06:24:12

+0

Мне нравится git по большей части, но профи охвачены так Я остановлюсь. Con - это то, что для новичков на самом деле очень легко потерять изменения. Когда я впервые начал, я часто попадал в состояние отдельной головы, и когда я переключился на другую ревизию/ветвь, я потерял свои обязательства. – Chance 2015-06-02 13:14:26

ответ

28

Я не имею много опыта с мерзавцем, но:

Плюсы:

  • Это действительно быстро
  • Местный совершает рок
  • Быстрый, чтобы начать новый репозиторий (без конфигурации и т. д.)
  • github прост в использовании

(. Я на самом деле не «нужно» распределенный сторона вещей тем не менее, за возможность иметь локальный репозиторий и нажмите на публичной)

Минусы:

  • поддержка окон по-прежнему отстает, я считаю, - и вы не можете просто использовать его из нормальной командной строке
  • Отсутствие IDE и интеграции Проводника
  • Это мне потребовалось некоторое время, чтобы найти good introductory text вдоль линий redbean книги.
  • Тот факт, что «добавление» измененный файл только добавляет содержимое в этот момент времени (так что он может показать, как поставил для фиксации и еще модификации, которые требуют другого git add) потребовалось некоторое время, чтобы понять
+0

Что касается книг - есть эта бета-книга от прагматичных программистов: http://www.pragprog.com/titles/tsgit/pragmatic-version-control-using-git – Abizern 2008-12-09 14:35:08

+2

Нет проблем с использованием командной строки Git из командной строки Windows, действительно. Я использовал msys Git из Powershell и cmd.exe без проблем некоторое время. Что касается отсутствия интеграции Explorer, это Pro для меня :-))). – 2009-01-13 14:19:34

+2

Ooh ... Я не понимал, что git в порядке с обычного cmd.exe. Должен попробовать ... – 2009-01-13 14:25:30

1

Отличный вопрос, я использую SVN довольно долгое время и чувствую себя довольно комфортно с ним. Но я должен был использовать Git пару раз, чтобы получить исходный код из разных проектов с открытым исходным кодом. Тем не менее, я не нашел времени, чтобы действительно узнать об этом. Стоит ли оно того?

Я также хотел бы спросить, в чем преимущества использования распределенного контроля версий над обычным VCS в качестве подрывной деятельности.

1

тарелочки имеют большинство из них, но:

Pro:

  • Ветвления! Работать над кусками функциональности в отдельных ветвях гораздо лучше, и они все еще могут управлять версиями, чем иметь несколько вещей, происходящих в одной ветке. И как только вы решили, что вам нравится ветвление, вам нужно любить, как легко git делает его по сравнению с SVN
4

Слияние гораздо проще в git, поскольку создание ветвей по умолчанию не является дополнительным вариантом. Поэтому, когда вам нужно что-то объединить, вы просто фиксируете его, а затем объединяете две ветви (существующую и новую, которые автоматически создаются для последней проверки).

Кроме того, при использовании git у вас всегда есть весь репозиторий. Вы можете зарегистрироваться в автономном режиме и слить позже (поскольку слияние намного проще).

Недостатком является то, что GIT практически не используется на USB-накопителе в Windows.Windows отключает кеширование для них, а GIT работает с миллионами крошечных файлов. Кроме того, поддержка IDE по-прежнему отсутствует. Я не уверен, что последнее действительно проблема. Пользовательский интерфейс, который поставляется с GIT, довольно приятный.

Кроме того, я не на 100% счастлив, что вам нужно «добавлять» существующие файлы все время [EDIT] и огромное количество функций. Для новичков они подавляющие, и часто неясно, почему вы хотите использовать определенную команду option /. Я имею в виду, что CVS поставляется с, скажем, 20 командами. GIT поставляется с 73, и у каждого есть много вариантов (и это не считается командами сантехники ...).

9

Поддержка Windows ужасна, поэтому я переехал в Mercurial, еще один DVCS, который так же хорош.

Преимущества DVCS становятся очевидными, когда вы, например, имеете репозиторий на своем сервере в офисе и работаете на сайте. Возможность совершать локально без доступа к серверному офису (и этот откат при необходимости) является блестящим!

10

Многие люди отрицают это, но выбор инструмента управления исходным кодом влияет на то, как вы работаете. Я много работал с Subversion, пока не открыл для себя Git. В основном я избегал ветвления в Subversion. Всякий раз, когда я не мог этого избежать, я предпочитал настраивать локальное зеркало (используя svk). В то время как разветвление легко выполняется как в Subversion, так и в Git, только Git делает слияние (и rebasing!) Весело, Subversion всегда была королевской болью, когда дело доходило до времени слияния.

Вторая вещь, которая мне очень нравится в Git (помимо всех упомянутых выше точек), - это «индекс», промежуточная область, которая содержит следующую фиксацию, и возможность добавлять только отдельные фрагменты измененного файл к нему.

2

Последняя версия Git может работать непосредственно в командной строке окна, так как я использую ее. Сейчас процесс довольно тривиальный.

У меня также есть Git, установленный на внешнем жестком диске и на моем прыжке с демпфером. Всякий раз, когда на новом компьютере я запускаю скрипт, который временно устанавливает путь для включения инструментов Git. Тогда вы можете продолжать развиваться!

11

Pro:

  • быстро - очень быстро.
  • Создание нового репо очень легко по сравнению с SVN
  • Полное репо содержится только в одной папке .git - он не будет добавлять папку .SVN в каждую папку вашего кода (неважно, но я like it)
  • Ветвление легче
  • GitHub!

Минусы:

  • не можете проверка часть хранилища (как только одну папку или только один файл)
  • Не отслеживать пустые папки
  • поддержки
  • Bad Windows (не беспокоить меня много - я использую Linux)
  • Я до сих пор не нашел хорошего инструмента для графического интерфейса Git (я использую KDESVN для SVN). Не большая проблема, если вам нравится CLI.
5

Работа с git очень отличается от работы с другими системами управления версиями.

Наличие местного репозитория очень важно. Это означает, что вы можете использовать всю мощь системы управления версиями (и это очень много с git), никому не мешая. Если в вашем проекте есть спорная проблема, вы можете просто работать над ней в частном порядке - создавая филиалы, складывая патчи и полируя их. Таким образом, вы можете вернуться с помощью сглаженного набора патчей. Но даже в «нормальной работе» гораздо лучше, если вы можете очистить свои патчи, прежде чем показывать их публике, и на самом деле отладка намного проще, если у вас есть нормальные исправления, а не только «концевые» снимки.

Прежде чем я совершу больший набор исправлений, я обычно переупорядочиваю исправления и исправления squash на свой новый код непосредственно в патч. Поэтому патчи выглядят так, как будто я никогда не ошибался. После этого мой частный филиал перевыполнен поверх HEAD, а затем толкнул. Обычно я никогда не использую слияние, поскольку он только загромождает историю.

Вкратце: это позволяет сохранить вашу историю чистой.

Это дает вам совершенно иное представление о вашей работе. Он позволяет вам видеть текущее состояние как дополнение отдельных патчей, которые создают историю, которая не является только журналом, а тем, что вы ставите там специально. Патч-наборы - это кирпичи, из которых вы создаете свое приложение, и, если необходимо, переместитесь в нужное место.

Я никогда бы не добровольно возвращался к любой другой системе управления версиями, которую я использовал до git или любой системы управления версиями, которая не поддерживает rebase и локальные ветви и фиксирует.

4

Другие соображения:

Pros:

  • Гибкость: не навязывает один, истинный рабочий процесс
  • Так быстро, что контроль версий становится второстепенной задачей
  • Легкие ветви, легкий слияния и промежуточная зона позволяет персонализировать рабочие процессы
  • Более мощный
  • Очень компактный репозиторий

Минусы:

  • Нет встроенных контроля доступа
  • Слабые инструменты для бинарных файлов. Не компактно изменяет двоичные файлы в репо и хранение двоичных файлов предотвращает автоматическую обработку окончаний строк в Windows.
  • Может быть труднее узнать, потому что он более гибкий и более мощный. Не всегда следует семантика CVS/SVN и не организована вокруг файлов.
19

Количество команд

Хотя SVN и другие современные VCS, как Hg или другие славные и полезные инструменты мерзавец является магазин полный станков. В то же время это означает, что вы и профессионалы. Хотя svn имеет 30 команд (согласно «svn help») git отправляет 130 man-страниц с более или менее каждым из них, описывающим одну команду. Одной из причин этого является то, что git предоставляет функции нижнего уровня, которые большинство пользователей будут когда-либо использовать в качестве инструментов командной строки. Но даже без этих команд низкого уровня git-корабли имеют очень много мощных инструментов и не встречаются ни в одном другом VCS, который я знаю (см. Примеры git-bisect, git-filter-branch, git-cherry или git-reset).Хотя очень полезно иметь эти инструменты под рукой, для начинающего очень сложно понять, какую команду им нужно и нужно знать, а какие нет.


Разработка модели

Аналогичная тема в том, что мерзавец является достаточно мощным, чтобы поддерживать очень различные режимы работы. Это затрудняет для новичков, поскольку на самом деле нет документа «лучшей практики», поскольку наилучшая практика не строится в git. Таким образом, вы должны решить сами, вы

  • Просто используйте сливает ли, чтобы избежать конфликтов с вами работать реж
  • Используйте частные ветви, которые получают перебазировались на вышестоящие ГОЛОВКИ
  • Используйте добывающие ветви
    • , которые объединены регулярно (летучая рыба)
    • объединен после завершения
  • U С.Е. дерево один проект сопровождающего, дерево сопровождающего, подразделы системы сопровождающих, сопровождающий водитель и участников с каждым уровнем потянув патчи от уровня ниже (Linux ядра)

Как у вас есть свой локальный репозиторий вы можете даже использовать очень отличный режим работы, чем проект, над которым вы работаете, и просто корректируйте свои наборы изменений, прежде чем нажимать/публиковать их.


Путь изменения

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

С централизованным VCS вы обычно просто совершаете фиксацию и внесенные вами изменения переходят в репозиторий. В git изменения могут пройти довольно много шагов, прежде чем они попадут в конечный пункт назначения. Типичные шаги (не так общие шаги в круглых скобках):

  • Рабочего реж (редактирование)
  • Index аки промежуточной области (мерзавец надстройка)
  • Локального репозиторий (Git совершить)
  • (Другое местное отделение) (мерзавец перебазироваться, GIT вишня выбрать, мерзавец слияния)
  • (хранилище суб сопровождающим) (GIT толчок, Git тянуть, почта)
  • Upstream репозиторий (Git толчок, Git тянуть, почта)

Как вы можете пропустить индекс, есть как минимум 2 шага, но обычно их больше. Это требует более глубокого понимания того, что вы делаете, и ввода большего количества команд. С другой стороны, это дает вам контроль над каждым из этих шагов.Вы можете

  • решить, какие джонки/линии идут в фиксации и которые не являются
  • решить, какие патчи вы хотите в каком из ваших местных отделений
  • решить, какие из патчей опубликованы
  • переделок , сквош, исправление, разделение, переупорядочить ваши патчи, прежде чем публиковать их
  • решить, какие люди вам доверяют, и принимать исправления от
  • передать части проекта другому, которому вы доверяете.

Вся эта сила и решения мешают начинающим начинать с git. После освоения они дают огромный контроль над кодом.


Написать доступ

Одна из основных про любой распределенной VCS является то, что авторы не требуют доступа для записи извлечь выгоду из VCS. Каждый, у кого есть доступ на чтение, может просто клонировать репозиторий, создавать ветки, когда это необходимо, и начинать сборку наборов патчей. Работа с cvs без доступа на запись - настоящая боль - с git нет большого различия, как получить свои исправления. Это не только техническое преимущество, но и экономит сложные обсуждения, действительно ли этот noobie должен получить доступ на запись.

0

Плюсы:

  • все упомянутые выше

Минусы:

  • странное поведение autocrlf в ОС Windows

  • невозможность переместить/переименовать файл или реж insode репо и Кепп его фиксации истории (GIT мв просто удаляет файл из репозитория, переименовывает и добавляет его к репо снова, таким образом, теряя всю историю)

Смежные вопросы