1. Проблема без контроля версий: почему просто копировать файлы — плохая идея
Давайте начнём с жизненной ситуации. Представьте, что вы работаете над своим Java-проектом. Всё идёт хорошо, пока не наступает момент "экспериментов". Вы решаете что-то поменять, но боитесь сломать рабочую версию. Что делать? Конечно, копировать проект!
В итоге на вашем диске появляются такие шедевры:
MyProject/
├── Main.java
├── Main_backup.java
├── Main_final.java
├── Main_final2.java
├── Main_точно_финал.java
├── Main_точно_точно_финал.java
Знакомо? А теперь представьте, что к проекту подключился ещё друг. Он тоже любит копировать файлы — только по-своему. Как понять, где самая свежая и рабочая версия? Как узнать, кто что поменял? Как вернуть всё, если эксперимент не удался?
Без контроля версий:
- Легко потерять или перепутать рабочий код.
- Невозможно "откатиться" к старой версии.
- Сложно работать вдвоём или втроём.
- Хаос и страх перед экспериментами.
Именно эти проблемы решают системы контроля версий — такие как Git.
Видео
Посмотрите лекцию от одного из ведущих менторов JavaRush Университета, который погрузит вас в мир Git — ключевой технологии для любого современного разработчика.
Видео состоит из двух частей:
- Сначала вы разберете основы работы с Git через терминал. Этот фундаментальный подход поможет вам понять, что происходит «под капотом» системы.
- Затем вы перейдете к практике в IntelliJ IDEA, где научитесь выполнять те же операции с помощью удобного графического интерфейса, как это ежедневно делают профессионалы.
Зеркало на Vimeo: Лекция 26 Git
2. Зачем разработчику нужен Git?
Git — это мощная система управления версиями, которую используют для отслеживания изменений в исходном коде во время разработки программного обеспечения. Она позволяет разработчикам сохранять различные версии файлов и координировать работу нескольких людей над общим проектом.
Основные понятия Git:
Репозиторий
Репозиторий (или "репо") — это место, где хранится вся история проекта, включая все изменения и версии файлов.
Коммиты
commit — это сохранённое состояние проекта. Каждый коммит в Git содержит информацию о том, какие изменения были внесены в проект, кем и когда. Коммиты образуют историю проекта и позволяют вернуться к любой предыдущей версии.
gitGraph
commit id: "1"
commit id: "2"
commit id: "3"
commit id: "4"
commit id: "5"
commit id: "6"
Каждый коммит — это "снимок" проекта, который следует за предыдущим, формируя последовательную историю изменений.
Ветви
branch — это независимая линия разработки. По умолчанию Git создает ветку main. Вы можете создавать новые ветви для разработки новых фич или исправлений, а затем объединять их обратно в основную ветвь.
gitGraph
commit id: "1"
commit id: "2"
branch develop
commit id: "3"
commit id: "4"
commit id: "5"
checkout main
commit id: "6"
commit id: "7"
merge develop
commit id: "8"
commit id: "9"
От основной ветки main "отпочковывается" ветка develop для параллельной разработки. После завершения работы изменения из develop сливаются обратно в main.
3. Основные команды Git (то, что под капотом)
Ниже — список основных команд для работы с Git через терминал. Важно понимать, какие команды лежат в основе всех операций. Однако мы будем придерживаться GUI-подхода и научимся выполнять все эти действия с помощью удобного графического интерфейса IntelliJ IDEA. Смотрите на эти команды как на то, что происходит "под капотом".
| Команда | Описание |
|---|---|
git init |
Инициализирует новый Git-репозиторий в текущей директории. |
git clone |
Клонирует репозиторий из URL в новую директорию. |
git add |
Добавляет файлы в индекс для следующего коммита. |
git commit |
Фиксирует подготовленные изменения в репозитории. |
git push |
Отправляет изменения из локального репозитория в удалённый. |
git pull |
Обновляет текущую ветку с последней версией из удалённого репозитория. |
git branch |
Показывает, создаёт или удаляет ветки. |
git merge |
Сливает изменения указанной ветки в текущую ветку. |
Эти команды представляют основные инструменты работы в Git, позволяя управлять изменениями кода, ветками и слияниями в проектах любого размера.
sequenceDiagram
participant Рабочая директория
participant Область индексации (Staging)
participant Локальный репозиторий
participant Удаленный репозиторий
Рабочая директория ->> Область индексации (Staging): git add (Подготовить)
Область индексации (Staging) ->> Локальный репозиторий: git commit (Сохранить локально)
Локальный репозиторий ->> Удаленный репозиторий: git push (Отправить на сервер)
Удаленный репозиторий ->> Рабочая директория: git pull (Скачать обновления)
4. Три места хранения кода
Когда вы будете пользоваться системой контроля версий для вашего кода, он, грубо говоря, будет храниться в трех местах:
1. Удаленный репозиторий
Это централизованное место для хранения вашего кода, обычно размещенное на таких сервисах как GitHub, GitLab или Bitbucket. Они обеспечивают централизованное хранение кода и являются основой для совместной работы. Удаленный репозиторий служит точкой интеграции для автоматизации процессов, таких как сборка, тестирование и развертывание приложений.
2. Локальный репозиторий
Локальный репозиторий — это ваша персональная копия кода, хранящаяся на вашем компьютере. В этом репозитории вы можете выполнять все операции с Git (коммиты, ветвления, слияния) без необходимости подключения к интернету.
3. Рабочая директория
Рабочая директория на вашем компьютере содержит актуальные файлы проекта, над которыми вы в данный момент работаете. Это место, где вы можете видеть и изменять файлы, добавлять новый функционал или исправлять ошибки.
Эти компоненты совместно обеспечивают мощную инфраструктуру для управления исходным кодом, позволяя разработчикам управлять историей проекта и сотрудничать.
5. GitHub — ваше портфолио
GitHub — это ведущая веб-платформа для хостинга исходного кода, использующая систему контроля версий Git. Основанная в 2008 году, она быстро стала одним из ключевых инструментов для разработчиков во всем мире.
GitHub дает возможность пользователям создавать репозитории для управления проектами, контролировать и отслеживать изменения в коде и сотрудничать с другими разработчиками. Для современного разработчика профиль на GitHub является важной частью портфолио, которое можно показать потенциальным работодателям.
6. Создание вашего первого репозитория на GitHub
Шаг 1. Зайдите на https://github.com и зарегистрируйтесь.
Шаг 2. Нажмите на кнопку New repository для создания нового репозитория.
Шаг 3. Задайте параметры для репозитория:
- Имя репозитория: придумайте осмысленное имя.
- Публичный или приватный: для учебных проектов лучше выбрать "Public", чтобы его могли видеть другие.
- Add a README file: обязательно поставьте эту галочку. README — это "лицо" вашего проекта.
- Add .gitignore: нажмите на выпадающий список и выберите шаблон для вашего языка.
- Choose a license: можно пропустить.
- Нажмите
Create repository.
Шаг 4. Поздравляем, ваш первый удаленный репозиторий создан!
7. Установка и настройка Git
Хотя основы Git можно изучать через консольные команды (как показано в видео), в ежедневной работе 99% разработчиков используют именно удобные инструменты, встроенные в среду разработки. Наша цель — научить вас работать так, как это делают профессионалы.
Интерфейс для работы с Git во всех современных IDE от JetBrains — будь то IntelliJ IDEA для Java/Kotlin, Rider для C# или PyCharm для Python — практически идентичен. Это значит, что научившись работать с Git в одной среде вы сможете легко применять эти навыки в любой другой. Поэтому мы будем использовать IntelliJ IDEA как универсальный пример. Все, что вы увидите здесь, будет выглядеть и работать точно так же и в вашей любимой IDE.
Чтобы работать с Git на вашем компьютере, Git нужно сначала установить. Если вы используете IntelliJ IDEA, она, скорее всего, предложит вам установить Git автоматически, если он не найден в системе. Мы рекомендуем согласиться с этим предложением — это самый простой путь.
Закройте текущий проект, выбрав File > Close Project, и нажмите Clone Repository.
Если же вы хотите установить его вручную, воспользуйтесь официальным сайтом: https://git-scm.com/downloads.
8. Немного об истории: main vs master
Ранее ветка в Git по умолчанию называлась master. Однако в 2020 году сообщество разработчиков и крупнейшие платформы, включая GitHub, перешли на использование более нейтрального термина — main.
Это важно знать, так как в некоторых старых статьях или проектах вы все еще можете встретить упоминание ветки master. В наших лекциях и в современных проектах основной веткой всегда будет main.
Подробнее о переходе на main можно узнать по следующим ссылкам:
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ