JavaRush /Курсы /Go SELF /Введение в Git: зачем нужен контроль версий

Введение в Git: зачем нужен контроль версий

Go SELF
32 уровень , 0 лекция
Открыта

1. Проблема без контроля версий: почему просто копировать файлы — плохая идея

Давайте начнём с жизненной ситуации. Представьте, что вы работаете над своим Go-проектом. Всё идёт хорошо, пока не наступает момент "экспериментов". Вы решаете что-то поменять, но боитесь сломать рабочую версию. Что делать? Конечно, копировать проект!

В итоге на вашем диске появляются такие шедевры:

MyProject/
├── main.go
├── main_backup.go
├── main_final.go
├── main_final2.go
├── main_really_final.go
├── main_really_really_final.go

Знакомо? А теперь представьте, что к проекту подключился ещё друг. Он тоже любит копировать файлы — только по-своему. Как понять, где самая свежая и рабочая версия? Как узнать, кто что поменял? Как вернуть всё, если эксперимент не удался?

Без контроля версий:

  • Легко потерять или перепутать рабочий код.
  • Невозможно "откатиться" к старой версии.
  • Сложно работать вдвоём или втроём.
  • Хаос и страх перед экспериментами.

Именно эти проблемы решают системы контроля версий — такие как Git.

Видео

Посмотрите лекцию от ментора JavaRush Университета. Видео даст вам мощную базу по работе с Git через терминал — это поможет понять саму механику процессов, скрытых за кнопками IDE.

Видео состоит из двух частей:

  • Сначала вы разберете основы работы с Git через терминал. Этот фундаментальный подход поможет вам понять, что происходит «под капотом» системы.
  • Затем вы перейдете к практике в IntelliJ IDEA, где научитесь выполнять те же операции с помощью удобного графического интерфейса, как это ежедневно делают профессионалы.

В видео ментор использует примеры на Java. Пусть вас это не смущает! Git — технология универсальная, и принципы работы с версиями абсолютно одинаковы для Go, Java или Python. Сосредоточьтесь на командах Git и логике их работы, а не на коде проекта.

Зеркало на Vimeo: Лекция по 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. Рабочая директория (Working Directory)

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

2. Область индексации (Staging Area)

Это промежуточная зона между вашей рабочей папкой и локальным репозиторием. В терминах графического интерфейса IDE (GUI) — это те самые галочки, которые вы ставите напротив измененных файлов перед тем, как нажать кнопку Commit. Вы сами выбираете, какие именно файлы и изменения готовы войти в следующий "снимок" истории.

3. Локальный репозиторий (Local Repository)

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

4. Удаленный репозиторий (Remote Repository)

Это централизованное место для хранения вашего кода, обычно размещенное на таких сервисах как GitHub, GitLab или Bitbucket. Они обеспечивают надежное хранение кода на серверах и являются основой для совместной работы в команде.

5. GitHub — ваше портфолио

Важно четко разделять два понятия: Git и GitHub. Git — это программа, которая работает на вашем компьютере локально (даже без интернета) и следит за версиями файлов. А GitHub — это облачный сервис (сайт), где хранятся удаленные копии ваших Git-репозиториев.

GitHubэто ведущая веб-платформа для хостинга исходного кода, использующая систему контроля версий Git. Основанная в 2008 году, она быстро стала одним из ключевых инструментов для разработчиков во всем мире.

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

6. Создание вашего первого репозитория на GitHub

Создание нового репозитория

Шаг 1. Зайдите на https://github.com и зарегистрируйтесь.

Шаг 2. Нажмите на кнопку New repository для создания нового репозитория.

Кнопка New repository

Шаг 3. Задайте параметры для репозитория:

  1. Имя репозитория: придумайте осмысленное имя.
  2. Публичный или приватный: для учебных проектов лучше выбрать "Public", чтобы его могли видеть другие.
  3. Add a README file: обязательно поставьте эту галочку. README — это "лицо" вашего проекта.
  4. Add .gitignore: нажмите на выпадающий список и выберите шаблон Go. Это критически важно: компилятор Go создает исполняемые бинарные файлы, а инструменты тестирования генерируют кэш и файлы покрытия кода, которые не должны засорять ваш репозиторий. Шаблон поможет Git автоматически их игнорировать.
  5. Choose a license: можно пропустить.
  6. Нажмите Create repository.

Шаг 4. Поздравляем, ваш первый удаленный репозиторий создан!

Готовый репозиторий на GitHub

7. Установка и настройка Git

Хотя основы Git можно изучать через консольные команды (как показано в видео), в ежедневной работе 99% разработчиков используют именно удобные инструменты, встроенные в среду разработки. Наша цель — научить вас работать так, как это делают профессионалы.

Интерфейс для работы с Git во всех современных IDE от JetBrains — будь то GoLand для Go, IntelliJ IDEA для Java/Kotlin или PyCharm для Python — практически идентичен. Это значит, что, научившись работать с Git в одной среде, вы сможете легко применять эти навыки в любой другой.

В этом курсе для демонстрации примеров мы будем использовать скриншоты из IntelliJ IDEA. Не пугайтесь: в вашей IDE от JetBrains (будь то GoLand или IntelliJ IDEA с установленным Go-плагином) все кнопки, меню и панели находятся ровно на тех же местах.

Чтобы работать с Git на вашем компьютере, Git нужно сначала установить. Если вы используете IDE от JetBrains, она, скорее всего, предложит вам установить Git автоматически, если он не найден в системе. Мы рекомендуем согласиться с этим предложением — это самый простой путь.

Закройте текущий проект, выбрав в верхнем меню File | Close Project. На стартовом экране (Welcome Screen) нажмите кнопку Clone Repository (в некоторых версиях интерфейса она может называться Get from VCS).

Стартовое окно IntelliJ IDEA

Если же вы хотите установить его вручную, воспользуйтесь официальным сайтом: https://git-scm.com/downloads.

Важный нюанс

Когда вы будете делать свой первый коммит в IDE, IntelliJ IDEA попросит вас представиться — указать имя пользователя и Email. Крайне важно указать именно тот Email, на который вы зарегистрировали свой аккаунт на GitHub.

Дело в том, что GitHub связывает авторство ваших коммитов с вашим профилем именно по этому Email-адресу. Если адреса совпадут, рядом с вашими коммитами появится ваша аватарка, а на странице вашего профиля начнут закрашиваться те самые заветные "зеленые квадратики" активности, которые так любят оценивать работодатели.

8. Немного об истории: main vs master

Ранее ветка в Git по умолчанию называлась master. Однако в 2020 году сообщество разработчиков и крупнейшие платформы, включая GitHub, перешли на использование более нейтрального термина — main.

Это важно знать, так как в некоторых старых статьях или проектах вы все еще можете встретить упоминание ветки master. В наших лекциях и в современных проектах основной веткой всегда будет main.

Подробнее о переходе на main можно узнать по следующим ссылкам:

Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ