Рекомендации по использованию Git с идеей Intellij

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

Контекст

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

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

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

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

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

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

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

-Вы переустанавливаете?

- Самый лучший способ слияния?

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

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

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

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

Спасибо

Ответ 1

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

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

предпосылку

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

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

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

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

  • Инструмент объединения идей работает намного лучше, чем слияние командной строки или даже с помощью 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 on linux, tortoiesmerge на окнах).

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

припрятать

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

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

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

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

  • Меню идей /UI по-прежнему показывает "git init...", хотя вы уже инициализировали Git. Это запутывает, но игнорирует его.

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

Ответ 2

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

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

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

Git - это система управления версиями распределенная. Итак, вы должны " подумать о локальном первом".

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

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

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

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

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

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

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