2010-10-06 2 views
37

Вкратце: какие лучшие практики для использования Intellij Idea (9) и Git?Рекомендации по использованию Git с идеей Intellij

Контекст

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

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

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

Пример Questions

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

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

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

-Вы перебазируете?

-Внешний способ слияния?

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

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

Мы все еще «думают в CVS» поэтому часть этого привыкает к мерзавцу; часть привыкает к идее Ui для git.

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

Благодарности

+3

Одна из особенностей, которую я хотел бы, это иметь системную папку intellij, зависящую от хэша исходного кода (например, сам git). Таким образом, он мог бы повторно синхронизировать кеш-молнию после переключения между совершенно разными ветвями ... прямо сейчас это боль. – ripper234

ответ

15

Вот что мы нашли через несколько недель Git/Idea. Я сделал это сообщество wiki. Пожалуйста, бросьте 2 kronor/centimos/pfennings/cents.

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

предпосылку

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

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

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

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

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

  • Не забудьте синхронизировать в Idea (Ctrl-Alt-у) при обновлении рабочего дерева из командной строки

  • Watching мерзавец консоли, чтобы узнать GIT фокусов идеи в; Идея выполняет GIT команды там (вид контроля версий, вкладка Console):.

пример:

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 
  • К сожалению, идея не имеет хорошие инструменты для "сливающихся конфликтов в вверх по течению фиксаций" в 9.0 .3

Пример:

  • Алиса делает работу, совершает (локально) файл А, совершает файл B, совершает файл C
  • Боб работает, совершает файл C, совершает файл D, совершает Файл Электронной
  • Алисы выталкивает ее изменения
  • Bob Потянул свои изменения

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

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

припрятать

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

Большой Старые проекты

  • Если вы работаете на десятилетие старый проект недавно мигрировали в Git, с банкой извлеченными файлами в scm (т.е. предварительно проверен на CVS/SVN, где log4j-1.0.jar находится в BRANCH-2-0, а mainline имеет log4j-9.0.jar), ПРОСМОТРЕТЬ ОСТОРОЖНО, если вы хотите проверить версию 2.0 ваш проект. Идея должна разгружать все «головные» банки и перезагружать банки-check-in-at-2.0. Это требуется для всех.

Другие маленькие вещи

  • Идея меню/UI все еще показывает "мерзавец INIT ...", даже если вы уже инициализирована Git. Это запутанно, но игнорировать его.

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

+0

Я вернулся к использованию Intellij и Git в новой рабочей среде и смотрел, как Intellij обрабатывает тайник. С Shelve я часто помещаю один или два файла, у которых были отладочные изменения, но с помощью Stash внутри Intellij единственным вариантом было Stash all changes. –

4

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

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

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

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

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

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

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

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

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

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

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

+0

Спасибо за взвешивание. Ваши комментарии, как правило, полезны, а статья ветвления информативна. – user331465

+5

Спасибо за взвешивание. Ваши комментарии, как правило, полезны, а статья ветвления информативна. Тем не менее, мой вопрос очень конкретно касался «использования git с идеей», а не «как использовать git?». Я специально ищу прагматичные точки об использовании Idea UI-for-git против использования git из командной строки, то есть «советы и методы, опасности и подводные камни», «что лучше всего подходит вам», «чего следует избегать на основе ваших опыт "и т. д. Опять же, спасибо за то, что предложили свои идеи. – user331465