IDE NetBeans обеспечивает поддержку для клиента управления версиями Git. Благодаря этой поддержке выполнять задачи контроля версий можно непосредственно из среды IDE. В этом документе демонстрируется выполнение основных задач контроля версий в среде IDE путем рассмотрения стандартной последовательности действий при использовании программного обеспечения контроля версий.
Git является распределенной системой с открытым кодом, предназначенной для быстрого и эффективного контроля версий как в небольших, так и в масштабных проектах. Каждый клон Git представляет собой полнофункциональный репозиторий с полным набором возможностей отслеживания редакций и истории, не зависящими от наличия сетевого доступа или доступа к центральному серверу. Операции ветвления и слияния выполняются быстро и без затруднений. Использование Git для контроля версий файлов в большой степени сходно с использованием таких систем, как Mercurial, Subversion, CVS, Perforce и т.п.
Для работы с этим учебным курсом требуются программное обеспечение и ресурсы, перечисленные ниже.
Программное обеспечение или материал | Требуемая версия |
---|---|
IDE NetBeans | Версия 7.1, 7.2 или 7.3 |
Комплект для разработки приложений на языке Java (JDK) | Версия 6 или 7 |
Для инициализации репозитория Git с использованием существующих файлов, контроль исходных кодов которых еще не осуществляется, требуется выполнить следующие действия.
В папке, указанной выше в шаге 3 (папка проекта NetBeans по умолчанию), создается вложенная папка .git, являющаяся репозиторием Git, в котором будут храниться все данные моментальных снимков проекта. В указанной папке Git запускает создание версий для всех файлов.
В окне Окно > Вывод > Выходные данные можно просмотреть отчет среды IDE о ходе создания репозитория в локальном рабочем каталоге.
В рабочем дереве все файлы проекта помечены как Добавленные. Для просмотра состояния файла наведите курсор на имя файла в окне проектов. В рабочем дереве состояние файла отображается в зеленом цвете справа от косой черты, как показано на следующем рисунке.
После инициализации репозитория Git выполняется либо добавление файлов, либо непосредственная фиксация файлов в репозитории Git.
Для получения копии уже существующего репозитория Git необходимо выполнить операцию его клонирования. Прежде чем запустить мастера клонирования репозитория в среде IDE, следует узнать URL-адрес репозитория Git.
Для клонирования репозитория Git из GitHub с использованием протокола SSH выполните следующие действия.
Примечание. Требуется учетная запись GitHub и пользователь должен быть и быть участником проекта для того, чтобы клонировать через SSH.
Примечание. Требуется формат закрытого ключа OpenSSH. Ключи, созданные PuTTYgen для Microsoft Windows, должны быть преобразованы в формат OpenSSH перед использованием их в IDE.
При добавлении файлов в репозиторий Git в среде IDE сначала формируются и сохраняются в индексе моментальные снимки проекта. После выполнения фиксации среда IDE сохраняет эти моментальные снимки в HEAD. Среда IDE дает возможность выбрать одну из последовательностей действий, описанных в следующей таблице.
Описание последовательности действий | Явным образом добавьте новые или измененные файлы в индекс, после чего выполните фиксацию в HEAD только тех файлов, которые помещены в индекс для подготовки. | Пропустите добавление новых или измененных файлов в индекс и выполните фиксацию требуемых файлов непосредственно в HEAD. |
---|---|---|
Шаги по выполнению выбранной последовательности действий |
|
|
Примечание. Состояние файла в HEAD отображается зеленым цветом слева от косой черты, как показано на следующем рисунке.
Это действие выполняется рекурсивно при вызове в папках при соблюдении структуры содержимого неструктурированных файлов IDE NetBeans.
После открытия в среде IDE проекта с контролем версий посредством системы Git, можно приступать к внесению изменений в исходные коды. Аналогично любому проекту, открытому в IDE NetBeans, можно открывать файлы в редакторе исходного кода двойным щелчком на их узлы при их отображении в окнах IDE (пример: проекты (Ctrl-1), файлы (Ctrl-2), Избранное (Ctrl-3 в Windows).
При работе с исходными файлами в среде IDE пользователь получает доступ к различным компонентам пользовательского интерфейса, облегчающими просмотр и использование следующих команд контроля версий.
Если файл с контролем версий открыт в среде IDE в редакторе исходного кода, то при внесении в файл изменений можно в режиме реального времени сравнивать файл с его основной версией, находящейся в репозитории Git. В процессе работы в среде IDE используется цветовое выделение на полях редактора исходного кода. Различные цвета соответствуют следующей информации.
Синий ( ) | Обозначает строки, измененные по сравнению с более ранней версией. |
Зеленый ( ) | Обозначает строки, добавленные к более ранней версии. |
Красный ( ) | Обозначает строки, удаленные по сравнению с более ранней версией. |
В левом поле редактора исходного кода отображаются изменения для каждой отдельной строки. При изменении определенной строки изменения немедленно показываются в левом поле.
Примечание. Можно щелкнуть группировку цветов на полях для вызова команд управления версиями. Например, ниже на рисунке показаны элементы оформления, доступ к которым можно получить, щелкнув красный значок, который указывает на то, что соответствующие строки были удалены из локальной копии.
На правом поле редактора исходного кода предоставлен обзор изменений, внесенных в файл в целом, сверху донизу. Цветовое выделение отображается незамедлительно после внесения изменений в файл.
Примечание. Щелкнув некоторую точку в пределах поля, можно незамедлительно перевести внутристрочный курсор в соответствующее местоположение в файле. Для просмотра числа затронутых строк наведите мышь на цветные значки в правом поле:
При работе в представлениях "Проекты" (Ctrl-1), "Файлы" (Ctrl-2), "Избранное" (Ctrl-3), или "Контроль версий", среда IDE предоставляет несколько функций визуализации, облегчающих просмотр информации о состоянии файлов. В примере, приведенном ниже, обратите внимание, как метка (например, )цвет имени файла и смежная метка состояния соответствуют друг другу для предоставления для пользователей простого и эффективного способа отслеживания данных об изменениях версий файлов:
Все эти компоненты — метки, цветовое выделение, ярлыки состояния файлов и средство Git для просмотра различий (Git Diff Viewer — возможно, наиболее важный компонент) — вместе обеспечивают возможность эффективного просмотра информации о версиях и управления этой информацией в среде IDE.
Метки относятся к узлам проектов, папок и пакетов. Они сообщают о состоянии файлов внутри соответствующего узла:
Ниже в таблице приведена цветовая схема, используемая для меток.
Элемент пользовательского интерфейса | Описание |
---|---|
Синяя метка () | Указывает на присутствие в рабочем дереве файлов, которые были изменены, добавлены или удалены. Касательно пакетов, данная метка относится только к самому пакету, но не к его подпакетам. Что касается проектов и папок, метка указывает на изменения как внутри самого элемента, так и внутри любых его подпапок. |
Красная метка () | Отмечает проекты, папки или пакеты, содержащие конфликтующие файлы. Касательно пакетов, данная метка относится только к самому пакету, но не к его подпакетам. Для проектов и папок метка обозначает конфликты этого элемента и всех содержащихся подпапок. |
Цветовое обозначение применяется к именам файлов для обозначения их текущего состояния по сравнению с репозиторием:
Цвет | Пример | Описание |
---|---|---|
Без специального цвета (черный) | Указывает на отсутствие изменений в файле. | |
Синий | Обозначает локально измененный файл. | |
Зеленый | Обозначает локально добавленный файл. | |
Красный | Указывает на то, что файл вовлечен в конфликт слияния. | |
Серый | Указывает на то, что файл игнорируется системой Git и не будет включен в команды контроля версий (например, "Обновить" и "Зафиксировать"). Файлы, стоящие под контролем версий, игнорировать невозможно. |
В среде IDE отображаются следующие два возможных состояния файла.
Ярлыки состояния файлов предоставляют текстовое описание состояния файлов с контролем версий в окнах среды IDE.
Ярлык состояния | Значение |
---|---|
- | Неизмененный |
Ответ | Добавлено |
U | Обновленный, но не подвергавшийся слиянию |
M | Изменено |
D | Удален |
I | Игнорируется |
R | Переименовано |
По умолчанию в окнах среды IDE состояние (новый, измененный, игнорируется и т.п.) и информация о папке отображаются в сером цвете справа от файлов, представленных в виде списка.
Файлы, вовлеченные в конфликт слияния, характеризуются как не подвергавшиеся слиянию — как правило, это отмечается красным цветом до тех пор, пока конфликт файлов не будет разрешен в результате явного действия пользователя. Ярлык состояния файлов, не подвергавшихся слиянию, зависит от конкретной ситуации (например, A/A - не подвергавшиеся слиянию, оба добавлены).
Можно включить или отключить отображение ярлыков состояний файлов, выбрав Вид > Показать ярлыки контроля версий в главном меню.
Представление Git "Контроль версий" дает возможность просматривать в режиме реального времени список всех изменений, внесенных в файлы конкретной папки локального рабочего дерева. По умолчанию оно открывается в нижней панели среды IDE, и в нем перечислены добавленные, удаленные и измененные файлы.
Чтобы открыть окно контроля версий, выберите версию файла или папку (например, из окна 'Проекты', 'Файлы' или 'Избранное') и либо выберите Git > Показать изменения в контекстном меню или выберите Группа > Git > Показать изменения в главном меню. В нижней панели среды IDE откроется следующее окно:
По умолчанию в представлении "Контроль версий" отображается список всех измененных файлов, содержащихся в выбранном пакете или папке рабочего дерева. С помощью кнопок панели инструментов можно выбрать для отображения список файлов, для которых имеются различия между индексом и HEAD, рабочим деревом и индексом или рабочим деревом и HEAD. Также можно щелкнуть заголовки столбцов над перечисленными файлами, чтобы отсортировать их по имени, состоянию или местоположению.
Панель инструментов представления "Контроль версий" содержит также кнопки, позволяющие вызывать стандартные задачи для всех файлов, отображенных в списке. В следующей таблице приведены команды Git, которые можно вызвать с панели инструментов представления "Контроль версий".
Значок | Имя | Функция |
---|---|---|
Взаимные изменения в HEAD и рабочем дереве | Отображается список файлов, уже помещенных на подготовку, или только измененных/созданных, но еще не помещенных на подготовку. | |
Взаимные изменения в HEAD и указателе | Отображается список файлов, помещенных на подготовку. | |
Взаимные изменения в индексе и рабочем дереве | Отображаются файлы, у которых есть различия между состоянием версии, помещенной на подготовку, и состоянием в рабочем дереве. | |
Обновить состояния | Обновление состояния всех выбранных файлов и папок. При обновлении файлов, отображенных в представлении "Контроль версий", отражаются все изменения, которые могли быть сделаны извне. | |
Открыть окно с различиями | Открытие представления различий, предоставляющее параллельное сравнение локальных копий и версий в репозитории. | |
Откат изменений | Отображается диалоговое окно Откат изменений . | |
Фиксация изменений | Отображается диалоговое окно Зафиксировать. |
Для доступа к другим командам Git в представлении контроля версий необходимо выбрать строку таблицы, соответствующую измененному файлу, а затем выбрать команду в контекстом меню:
Сравнение версий файлов – обычная задача при работе над проектами под контролем версий. В среде IDE сравнение редакций выполняется с помощью команды Diff.
В программе просмотра различий используется такое же цветовое выделение, которое используется для отображения изменений другими компонентами системы контроля версий. На снимке экрана выше зеленый блок обозначает содержание, добавленное к последней редакции. Красный блок указывает, что содержание из ранней редакции было позднее удалено. Синий указывает, что в выделенных строках произошли изменения.
Панель инструментов программы просмотра различий содержит также кнопки, позволяющие вызывать стандартные задачи Git для всех файлов, отображенных в списке. В следующей таблице приведены команды Git, которые можно вызвать с панели инструментов программы просмотра различий.
Значок | Имя | Функция |
---|---|---|
Взаимные изменения в HEAD и рабочем дереве | Отображается список файлов, уже помещенных на подготовку, или только измененных/созданных, но еще не помещенных на подготовку. | |
Взаимные изменения в HEAD и указателе | Отображается список файлов, помещенных на подготовку. | |
Взаимные изменения в индексе и рабочем дереве | Отображаются файлы, у которых есть различия между состоянием версии, помещенной на подготовку, и состоянием в рабочем дереве. | |
Перейти к следующему отличию | Отображается следующее отличие в файле. | |
Перейти к предыдущему отличию | Отображается предыдущее отличие в файле. | |
Обновить состояния | Обновление состояния всех выбранных файлов и папок. Файлы, отображаемые в окне контроля версий, можно обновить для отражения любых изменений, внесенных извне. | |
Откат изменений | Отображается диалоговое окно Откат изменений . | |
Фиксация изменений | Отображается диалоговое окно Зафиксировать. |
Если выполняется просмотр различий для локальной копии в рабочем дереве, среда IDE дает возможность внести изменения непосредственно из программы просмотра различий. Чтобы сделать это, поместите свой курсор внутри правой панели просмотра различий и измените свой файл соответственно, либо используйте значки, отображающиеся в строке рядом с каждым выделенным изменением:
Значок | Имя | Функция |
---|---|---|
Заменить | Выделенный текст вставляется в копию из рабочего дерева. | |
Переместить все | Выполняется откат всей локальной копии из рабочего дерева. | |
Удалить | Выделенный текст удаляется из локальной копии в рабочем дереве. |
Для отсеивания локальных изменений, внесенных в выбранные файлы из рабочего дерева, и замены этих файлов файлами из индекса или HEAD выполните следующие действия.
Среда IDE заменяет выбранные файлы теми, которые указаны выше в шаге 3.
Для фиксации файлов в репозитории Git выполните следующие действия.
Открывается диалоговое окно Фиксация.
Диалоговое окно Фиксация состоит из следующих компонентов.
Здесь же имеются две кнопки-переключателя, осуществляющие переключение на режим, в котором следует выполнить фиксацию.
Элемент пользовательского интерфейса | Имя | Описание |
---|---|---|
Взаимные изменения в HEAD и указателе | Отображается список файлов, помещенных на подготовку. | |
Взаимные изменения в HEAD и рабочем дереве | Отображается список файлов, уже помещенных на подготовку, или только измененных/созданных, но еще не помещенных на подготовку. |
Примечание. Чтобы указать здесь, следует ли исключать отдельные файлы из фиксации, либо снимите флажок в первом столбце с именем Фиксация или щелкните правой кнопкой мыши строку файла в столбце Действие фиксации и выберите Исключить из фиксации во всплывающем меню. Для отображения средства просмотра различий щелкните правой кнопкой мыши строку файла в столбце Действие фиксации и выберите Различия во всплывающем меню.
Примечание. Для запуска в среде IDE режима отслеживания проблем требуется установить подключаемый модуль для JIRA или Subversion.
Поскольку среда IDE поддерживает систему Git, появляется возможность использования ветвей для ведения различных версий всей базы кода.
При работе с ветвями в среде IDE поддерживаются следующие действия.
Чтобы, не оказывая влияния на основную ветвь, работать с отдельной версией своей файловой системы с целью стабилизации или экспериментирования, создайте локальную ветвь, выполнив для этого следующие действия.
Примечание. В качестве альтернативы щелкните правой кнопкой мыши проект, управление версиями которого осуществляется, или папке и выберите 'Git'> 'Ветвь' > 'Создать ветвь' во всплывающем меню.
Откроется диалоговое окно "Создать ветвь".Если требуется редактировать файлы в уже существующей ветви, можно извлечь ветвь для создания копий файлов в рабочем дереве.
Для извлечения редакции выполните следующие действия.
Примечание. Если указанный выпуск относится к допустимой фиксации, которая не отмечены именем ветви, HEAD отключается и пользователь бльше не принадлежит ветви.
Примечание. Если требуется переключить файлы на уже существующую ветвь (например, на фиксацию, которая не находится наверху одной из ветвей), можно использовать команду "Группа > Git > Ветвь > Переключить на ветвь", указать ветвь в диалоговом окне "Переключение на выбранную ветвь", извлечь ее в качестве новой ветви (не обязательно) и нажать кнопку "Переключить".
В среде IDE поддерживается контекстно-зависимое извлечение файлов, папок и проектов, выбранных в текущий момент в среде IDE. Для извлечения нескольких файлов (не ветви) из индекса выполните следующие действия.
Для переноса изменений из редакции репозитория в рабочее дерево выполните следующие действия.
Примечание. При возникновении конфликта слияния конфликтующий файл помечен с красной отметкой для указания этого конфликта.
Примечание. После слияния небходимо зафиксировать изменений для их добавления к HEAD.
Для удаления ненужной локальной ветви выполните следующие шаги.
Примечание. Ветвь должна быть неактивной, т.е. в настоящее время не изъята в рабочее дерево.
При работе совместно с другими разработчиками требуется обмениваться результатами работы. Это сопровождается загрузкой изменений (со слиянием с активной ветвью или без такового) из удаленных репозиториев, размещенных в сети или Интернете, выгрузкой изменений в них и помещением их в эти репозитории.
В процессе загрузки изменений из исходного удаленного репозитория доставляются те изменения, которых у вас еще нет. При этом никакие локальные ветви никогда не изменяются. В процессе загрузки изменений из удаленных репозиториев доставляются все ветви, которые можно слить с вашей ветвью или просто в любой момент проверить их.
Для загрузки обновлений выполните следующие действия.
В процессе загрузки изменений со слиянием с активной ветвью обновлений из удаленного репозитория Git в нем осуществляется выборка изменений и выполняется их слияние в локальном HEAD локального репозитория.
Для осуществления загрузки изменений со слиянием с активной ветвью выполните следующие действия.
Для внесения изменений из локального репозитория Git в общий репозиторий Git выполните следующие действия.
В данном учебном курсе показаны основные задачи контроля версий в среде IDE. Описана стандартная последовательность действий при использовании поддерживаемой средой IDE системы контроля версий GIT. Продемонстрирован способ настройки проекта с контролем версий и выполнения основных задач контроля версий файлов. Параллельно с этим дано представление о некоторых компонентах GIT, включенных в среду IDE.