Skip to main content

Git

У всех сред разработки Jetbrains есть встроенный инструмент, упрощающий работу с репозиториями.

Этот инструмент устроен одинаково, поэтому работа с ним рассмотрена на примере Intellij IDEA.

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

idea

Публикация проекта

Чтобы опубликовать проект на гитхабе, выберите в меню Git->GitHub->Share Project on GitHub

idea

Если вы впервые подключаетесь к гитхабу через Idea, то вам нужно предоставить доступ. Жмём Add account.

idea

Перед продолжением убедитесь, что вы вошли в свой гитхаб аккаунт в браузере. В появившемся меню выбираем Log in via GitHub.

idea

Откроется окно подтверждения.

idea

Получаем сообщение, что аккаунт успешно связан с Idea

idea

Теперь окно публикации репозитория будет выглядеть так

idea

Если вы уже вошли, то окно будет выглядеть так

idea

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

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

В текстовом поле указывает описание создаваемого коммита.

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

Нажмите Add.

idea

Среда спросит у вас, хотите ли вы добавить файл .gitignore в git. Снова нажмите Add.

idea

В правом нижнем углу отображается прогресс выполняемых действий.

idea

Дождёмся, пока idea загрузит коммит на сервер. Кликните по ссылке, выделенной красной линией. Тест у вас может отличаться.

idea

Всё готово, репозиторий опубликован

idea

Отправка изменений

Если вы раскроете дерево проекта, то увидите, что названия файлов окрашены в разные цвета:

idea

Часть папок и файлов являются служебными, они связаны с конкретным ПК и не должны индексироваться. У git есть команда сделать все изменённые файлы индексированными. Но перед тем, как добавить, система контроля версий сверяется с файлом .gitignore. И только если файл не подходит ни под один из шаблонов, он добавляется в список индексации.

Каждая строка .gitignore - это шаблон. В нашем случае первая строка говорит, что не нужно индексировать ничего из папки .idea, вторая - что нужно пропустить все файлы с расширением .iml.

В своей сути эти шаблоны - регулярные выражения, а в регулярных выражениях * означает любое количество любых символов. Это обозначение пришло из теории формальных языков, LL^* обозначалось множество всех последовательностей символов, те слов, составленных из букв алфавита LL.

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

Кстати, сама команда git add * на самом деле принимает регулярное выражение. Она добавляет в список индексации все файлы, удовлетворяющие ему.

Поэтому звёздочка здесь означает то же самое, что и в .gitignore: любые файлы подойдут.

idea

Красным цветом обозначаются созданные, но не добавлены в индекс файлы, оранжевым - игнорируемые.

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

Можно вручную заполнять .gitignore, но проще использовать встроенный инструмент.

Чтобы добавить тот или иной элемент, нажмите по нему правой кнопкой мыши по нему и выберите Git->Add to .gitignore->.gitignore.

idea

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

idea

Теперь всё, кроме исходников и файла gitignore, окрашено в оранжевыйclion нужно не добавлять в список индексации ещё и CMakeLists.txt).

Список игнорирования .gitignore при этом изменился (в clion он будет другим)

idea

При этом сам файл окрасился в синий цвет. Так idea показывает, что файл отличается от той версии, которая сохранена в последнем коммите.

Если вы работаете в clion, вам необходимо вручную добавить папку /.idea/ в файл .gitignore

idea

Запускаем создание нового коммита. Это можно сделать через меню Git->Commit. Либо можете нажать сочетание клавиш Ctrl+K

В верхнем левом блоке указывается, какие файлы добавить в коммит. У нас всего один изменённый файл .gitignore, он помечен галочкой.

Снизу слева указывается название коммита. Назовите его gitignore changed.

Нажмите на треугольник рядом с Commit:

idea

В выпадающем меню нажмите Commit and Push:

idea

Дальше нажмите Push

idea

Внизу будет отображён прогресс отправки данных на сервер

idea

Когда отправка будет закончена, idea выдаст соответствующее сообщение

idea

Репозиторий будет выглядеть теперь так

idea

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

Если вы захотите в какой-то момент оправить на сервер все созданные вами коммиты, то можно не создавать новый, а просто выбрать в меню команду Git->Push. Появится это же окно.

Readme

Добавим теперь в проект файл readme.md. Для этого кликните правой кнопкой мыши по папке проекта и в выпадающем меню выберите New..->File

idea

Название вводится в маленьком окне New File по центру экрана. Введите название readme.md и нажмите Enter

idea

Idea предложит вам добавить новый файл в список индексации. Нажмите Add.

idea

Теперь readme.md станет зелёного цвета. Так idea показывает, что файл добавлен в индекс, но не имеет версии в последнем коммите.

idea

Если вы нажмёте Cancel, то файл не добавится в индекс и будет красного цвета. Чтобы добавить его, кликните по нему правой кнопкой мыши в дереве проекта и в выпадающем меню выберите Git->Add.

idea

Заполните readme текстом:

## Тестовый репозиторий

Он создан для проверки работы `.gitignore`.

У Idea есть встроенный инструмент отображения файлов формата *.md. В правом верхнем углу (выделено красным) расположен элемент управления отображением. Если вы не видите этих значков, просто переместите курсор мыши в правый верхний угол окна редактирования текста.

idea

В режиме редактирования и предпросмотра справа появится прототип того, как будет выглядеть ваш readme файл на гитхабе:

idea

Создайте новый коммит, нажав Ctrl+K. В появившемся окне поменяйте название коммита на readme added и нажмите Commit and Push

idea

В следующем окне нажмите Push

idea

Теперь репозиторий будет выглядеть так:

idea

Добавим теперь README.md файл

idea

Получение изменений*

Теоретический блок

Вам нужно просто прочитать его. Команды выполнять не требуется.

Если вам нужно получить новые изменения с сервера, то открываем меню Git->Pull.

idea

В открывшемся окне жмём Pull. Если вам нужна не основная ветка, выберите её в соответствующем элементе управления Первый пункт - сама команда, второй - удалённый репозиторий, откуда будет выполнена загрузка, третий - ветка, которая будет загружена.

idea

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

idea

Копия проекта*

Теоретический блок

Вам нужно просто прочитать его. Команды выполнять не требуется.

Если мы хотим создать копию удалённого репозиотория (т.е. репозхитория на удалённом сервере), то это тоже можно сделать через idea. Для этого нужно в меню выбрать File->New...->Project form Version Control

idea

Теперь нам нужно перейти на вкладку GitHub, выбрать нужный нам проект в списке

idea

В появившемся окне выбираем папку где будет лежать папка проекта, а не саму папку проекта.

idea

И уже вручную в нижнем поле нужно дописать название папки проекта

Жмём Clone и дожидаемся, пока удалённый репозиторий будет скопирован.

idea

В появившемся окне Idea предлагает нам выбрать, где открыть загруженный проект.

idea

This window - открыть проект в текущем окне, New window - в новом, Cancel - отмена.

idea

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

idea

В правом верзнем углу жмём по надписи Setup SDK и в появившемся меню выбираем любую из установленных версий. У меня она всего одна 17 java version '17

idea

Теперь нам осталось настроить непосредственную сборку нашего проекта.

idea

Для этого вам нужно открыть файл, который будет исполняемым. В нашем случае - это Main.java. Теперь жмём в меню Run->Run....

idea

В появившемся меню выбираем нужный нам класс, а именно: Main.

idea

Получим:

idea

Последующие запуски можно уже выполнять, как обычно, нажимая на зелёный треугольник.

idea