Что хорошего в Git? - PullRequest
       9

Что хорошего в Git?

32 голосов
/ 13 февраля 2009

Для кого-то из более традиционного VCS (CVS / SVN), какие самые веские причины для изучения и перехода на git?

Пожалуйста, прокомментируйте необходимые технические возможности команды, чтобы заставить работать git. Я видел, как умные люди поднимаются по кривой обучения и все еще теряют прическу. Кто-нибудь может подняться по этой кривой или Git не для всех команд?

Конечно, я также хочу услышать о функциональных преимуществах, поддержке инструментов, интеграции других систем (CI и т. Д.) ...

(Это кажется очевидным вопросом, но я не нашел его дубликата, несмотря на несколько поисков)

РЕДАКТИРОВАТЬ Ссылки на хорошие ресурсы также приветствуются.

Ответы [ 8 ]

19 голосов
/ 13 февраля 2009

На моей голове:

  • его распределенный аспект (у каждого разработчика есть копия репозитория)
  • Способность обрабатывать сложные слияния очень быстро
  • возможность переключаться с задачи на задачу, откладывать свою работу, возвращаться к ней ...
  • дешевое ветвление (мгновенное переключение: оно просто записывает несколько бит в файл! И оно не считает ветвь каталогом, как SVN)

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

alt text

В частности, rebase поначалу может быть трудно правильно использовать, поскольку он переписывает историю ветки, и это изменяет связанный с ним SHA1: на публичную ветку, что означает множество слияний других разработчиков, тянущих из него.

8 голосов
/ 13 февраля 2009

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

Тем не менее, git есть что предложить. Не углубляясь в git wizardry, вы можете быстро научиться использовать в своих интересах некоторые из его самых популярных аспектов: способность регистрироваться локально, не продвигаясь вверх по потоку к основному репо, и почти полностью без проблем разветвление и слияние.

Вы можете получить очень приятный опыт работы с git при помощи нескольких основных команд.

Из всех имеющихся ресурсов Скотт Чакон Getting Git - это то, что продало мне преимущества git и дало мне мотивацию пройти через крутую часть кривой обучения.

5 голосов
/ 26 февраля 2010

Github! На самом деле, я только научился ценить мерзавцев, используя github.

4 голосов
/ 13 февраля 2009

Git очень быстр и хранит репозитории очень компактным образом (от одной десятой до одной сотой размера одной и той же базы кода + история в SVN). Git (и большинство распределенных VCS) дают вам дешевые ветки, которые безболезненно создаются, обрабатываются и объединяются. Все это происходит локально, и члены команды не отвлекаются на текущую работу товарищей по команде, если не предпринимаются активные усилия, чтобы поделиться ею.

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

Я бы рекомендовал сначала освоиться с ним как с клиентом, поговорив с github или аналогичным инструментом.

На ваш вопрос о дизайнерах и менее технических специалистах, которые его используют, я бы сказал, что если рабочий процесс и команды хорошо документированы, то после некоторого обучения они смогут быстро освоить его. Будут ли они ценят это совсем другой вопрос! : -)

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

3 голосов
/ 01 марта 2010

Я понимаю, что это вопрос о Git, но ОП должен понимать, что многие из преимуществ применимы ко всем основным распределенным системам управления версиями. У Git, Mercurial и Bazaar есть свои сильные и слабые стороны, поэтому вы должны изучить все три и решить, какой из них лучше всего подходит для вашей работы и ваших проектов.

3 голосов
/ 13 февраля 2009

Я только начал использовать git месяц назад и люблю его. Это быстрый и простой в использовании как для команд, так и для отдельных лиц. Это не очень сложно учиться, и мне не нужно было учиться новым техническим навыкам, чтобы использовать git. Я знаю, что он поддерживает миграцию из CVS / SVN. Самое приятное, что вы все равно можете поддерживать рабочий процесс в стиле CVS / SVN, если хотите.

Предлагаю посмотреть на git wiki: http://git.or.cz/gitwiki и официальный сайт: http://git -scm.com /

Надеюсь, это поможет, и вам нравится использовать git.

2 голосов
/ 26 февраля 2010

История GIT является классикой в ​​истории FOSS. Смотрите историю Git в Википедии. Теги для этой истории: BitKeeper, Эндрю Триджелл, Торвальдс, Git, самообслуживание за 2 дня .

Ну, не ответ, кто-то с отношением FOSS / Hacker наверняка с удовольствием прочитает это.

2 голосов
/ 19 февраля 2009

Многие люди говорят о том, как сложно использовать git, но ничего не стоит, если вы будете придерживаться очень простого шаблона использования, git не сложнее, чем, скажем, RCS.

Использование git для вашего собственного контроля версий локали (для тех же вещей, которые вы использовали бы RCS), я бы поспорил проще, чем использование RCS.

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

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

Часто я работал над большими задачами по рефакторингу и одновременно делал небольшие исправления на стороне. Я обнаружил, что очень трудно манипулировать с перформансом. Но с помощью git я смог загрузить множество небольших языковых веток для различных экспериментов, рефакторинга и исправления ошибок, которые я делал.

Так что для меня большие продажи Git:

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

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

...