Лучшие практики для использования Git с Intellij Idea - PullRequest
40 голосов
/ 06 октября 2010

В двух словах: как лучше всего использовать Intellij Idea (9) и Git?

Context

Мы недавно обновили до версии 9 идеи Intellij и начали использовать Git для новой функции в существующем проекте.

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

Пользовательский интерфейс Idea одинаков как для CVS, так и для Git, но базовые реализации немного отличаются.

Примеры вопросов

Например: -С CVS, когда у нас было несколько выпусков продукта, у каждого из нас была бы локальная копия веток 1-0, 2-0, 3-0 и т. Д., Каждая из которых имела свои собственные файлы Intellij (т.е. .iws и т. д.). Похоже, у «git way» есть один проект и используется «git branch» для переключения веток. Это хорошо, но это создает огромные накладные расходы для идеи (так как она должна перезагружать каждый измененный файл, включая отмеченные файлы) при смене веток. Итак: у вас все еще есть отдельный проект (с .git) для каждого "основного выпуска" или у вас есть один проект и вы используете "git branch"?

-Это хорошая идея использовать Autostash?

-Вы автоматически добавляете каждую модификацию в ваш git commit? или использовать "git add" позже?

-Ты ребазируешь?

-Лучший способ слияния?

-Все другие советы / советы / что работает для вас и т. Д.

Заключительные комментарии

Мы все еще "думаем в cvs", поэтому часть этого привыкает к git; часть привыкает к пользовательскому интерфейсу Idea для git.

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

Спасибо

Ответы [ 2 ]

15 голосов
/ 22 октября 2010

Вот что мы нашли после нескольких недель Git / Idea.Я сделал это вики сообщества.Пожалуйста, добавьте свои 2 кроны / сантимы / пфенинги / центы.

Примечание: я отвечаю на свой собственный вопрос, потому что искал эти простые в использовании маркеры.

Предварительное предположение

Идея - отличный инструмент.Здесь никто не жалуется.Просто наблюдаю.

Лучшие практики

  • На данный момент (9.0.3) Git with Idea просто сложнее в использовании, чем SVN с Idea,Часть происходит из-за сложности Git (против SVN), отчасти потому, что инструменты Idea не делают всего в мире git.

  • Таким образом, вам нужно будет использовать командную строку

  • Инструмент слияния Idea работает намного лучше, чем слияние командной строки или даже использование mergetool (используя meld или mergetool).Причина: у вас гораздо больше свободы для работы в «среде идей», чем для исправления по одной строчке за раз.

  • Не забудьте выполнить синхронизацию в Idea (ctrl-alt-y), когдавы обновляете рабочее дерево из командной строки

  • Наблюдая за консолью Git, чтобы узнать об идеях git;Идея выполняет там команды git. (Представление контроля версий, вкладка Консоль):

пример:

13:30:58.234: git log -M --follow --name-only --pretty=format:%H%x00%ct%x00%an%x20%x3C%ae%x3E%x00%cn%x20%x3C%ce%x3E%x00%s%n%n%b%x00 --encoding=UTF-8 -- src/jsp/workspaces/include/edit.jsp
13:31:02.437: cd J:\projects\PE-GIT\pe
13:31:02.437: git annotate -p -l -t -M HEAD -- src/jsp/workspaces/include/edit.jsp
  • К сожалению, у Idea нет хороших инструментов для "конфликты слияния в восходящих коммитах »в 9.0.3

Пример:

  • Алиса работает, фиксирует (локально) файл A, фиксирует файл B, фиксирует файл C
  • Боб работает, фиксирует файл C, фиксирует файл D, фиксирует файл E
  • Алиса отправляет свои изменения
  • Боб извлекает свои изменения

Исходя изCVS / SVN, я ожидал, что всплывет удобный инструмент сравнения идей.Нет. Вместо того, чтобы git / idea выбрасывали красный флаг, я обычно использую «git mergetool» (meld od в linux, tortoiesmerge в windows).

Примечание. Возможно, Idea предоставляет лучший способ.Пожалуйста, поправьте меня.Примечание к мотивации: можете ли вы настроить .gitconfig для использования инструмента сравнения Idea?

Stashing

  • Идеи "Полка" дублирует функцию "Git Stash".Оба кажутся похожими.Оба используют патчи.Вы, вероятно, хотите использовать один или другой.Я не понял преимущества одного или другого

Большие старые проекты

  • Если вы работаете над десятилетним проектомнедавно перенесен в Git, файлы jar проверены в scm (то есть ранее проверены в CVS / SVN, где log4j-1.0.jar находится в BRANCH-2-0, а основная строка имеет log4j-9.0.jar), PROCEED WITHВНИМАНИЕ , если вы хотите оформить "версию 2.0" вашего проекта.Идея должна выгрузить все «головные» банки и перезагрузить jar-checked-in-at-2.0.Это требует вечности.

Другие мелочи

  • Идея меню / пользовательский интерфейс по-прежнему показывает "git init ...", даже если вы ужеинициализированный Git.Это сбивает с толку, но игнорируйте это.

  • Вы не можете иметь одинаковое рабочее дерево как в Git, так и в CVS / SVN (хотя пользовательский интерфейс может показаться таковым).Я / мы попробовали это на начальной стадии «давайте попробуем git и все еще будем использовать CVS в качестве плана резервного копирования».Это не сработало

4 голосов
/ 06 октября 2010

Во-первых, вы можете получить много информации о git в бесплатных онлайн-справочниках:

Примечание. Git "хорошие практики" и рабочий процесс полностью независимы от используемой вами среды IDE. К счастью, IDEA - отличная среда разработки, и большинство полезных функций Git хорошо реализованы (rebase, stash и т. Д.)

О ваших вопросах о git-flow вы думаете как с централизованным VCS.

Git - это Распределенная Система контроля версий. Таким образом, вы должны « сначала думать локально ».

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

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

Когда вы собираетесь нажать, вы можете исправить всю свою историю с момента последнего нажатия (например, с помощью rebase).

Например (если вы забыли изменить предыдущий коммит): - совершить "супер функцию" - совершить "ups: забыл файл" - совершить «исправление ошибки»

Перед нажатием этих 3 коммитов вы можете объединить эти коммиты, используя интерактивный ребаз с IDEA. Таким образом, 2 последних коммита будут включены в первый.

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

Об общем рабочем процессе Git, я рекомендую вам эту хорошую статью: http://nvie.com/posts/a-successful-git-branching-model/

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