Введение в Git. Что это такое и как использовать?

Введение в Git. Что это такое и как использовать?

Перевод статьи An introduction to Git: what it is, and how to use it

Git — это распределенная система контроля версий с открытым исходным кодом. Описание довольно сложное, давайте разберем его по частям:

  • Система контроля: Git отслеживает и хранит ваш контент. Чаще всего от используется для программного кода.
  • Система контроля версий: код, который хранится в Git может изменяться и добавляться. Часто над одним проектом параллельно работают несколько программистов. Система контроля версий сохраняет историю изменений и позволяет удобно с ней работать. Кроме того в Git есть такие удобные вещи как ветки и слияния.
  • Распределенная система контроля версий: в Git есть удаленный репозиторий, который располагается на сервере, и локальный репозиторий на машине каждого разработчика. Это значит, что код не только хранится на центральном сервере. На каждом компьютере есть его полная копия.

Зачем вообще нужны системы контроля версий?

В реальном мире над проектами обычно параллельно трудятся сразу несколько разработчиков. Так как они имеют дело с одним и тем же кодом, при его изменении возможны конфликты. Git позволяет решать эту проблему.

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

И наконец, иногда требуется объединить в одну кодовую базу несколько параллельных проектов. В этом очень помогает концепция веток в Git.

Начинаем использовать Git

Установка

Здесь вы найдете детальную инструкцию по установке Git на любую операционную систему.

Проверьте установку, запустив в терминале команду

Создание локального репозитория

Создайте отдельную папку для вашего проекта. Давайте для примера назовем ее simple-git-demo.

Зайдите в нее и добавьте локальный git-репозиторий с помощью следующих команд:

Немного кода

Создайте новый файл demo.txt в папке проекта и запишите в него что-нибудь:

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

Работа с кодом и сохранение изменений

Добавление порции кода в локальный репозиторий называется коммитом, или фиксацией. До коммита код находится в «рабочей» или «промежуточной» области (staging area). Здесь можно отслеживать все файлы, которые должны быть зафиксированы.

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

Добавление в рабочую область (staging)

Для добавления файла в промежуточную область используется следующая команда:

Можно добавить сразу несколько:

Чтобы добавить все файлы внутри директории проекта, используйте:

Обращайтесь с этой командой осторожно, так как она действительно добавляет ВСЕ файлы и папки в промежуточную область.

Фиксация изменений (commiting)

Чтобы сделать коммит, нужно выполнить команду:

«Initial Commit» — это сообщение фиксации. Используйте понятные и отражающие суть изменений сообщения.

Git status и git log

Теперь изменим demo.txt:

Статус

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

Мы увидим, что  demo.txt изменен, но еще не находится в рабочей области. Давайте добавим его:

и зафиксируем изменения:

Log

Команда git log напечатает все сделанные коммиты вместе с их автором, датой и сообщением.

Ветки

До сих пор мы не создали ни одной ветки в Git. По умолчанию все коммиты попадают в ветку master.

Что такое ветка?

Ветка — это просто указатель на последний коммит в репозитории. В данный момент наша ветка master указывает на второй коммит с сообщением "demo.txt file is modified".

Зачем нужно создавать несколько веток?

Разные ветки позволяют параллельно разрабатывать разную функциональность.

Изначально commit 1 и commit 2 выполнялись в ветке master. После второй фиксации создается новая ветка под названием test, и commit 3 и commit 4 добавляются в нее.

В то же время в ветку master тоже добавляются commit 3 и commit 4. То есть в разных ветках параллельно создаются коммиты. Сейчас тестовая ветка не связана с главной, но их можно объединить с помощью git merge. Этот вопрос будет рассмотрен позднее, а пока повторим схему с картинки.

Создайте новую ветку в локальном репозитории

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

Вот теперь мы находимся на ветке test.

Увидеть полный список все веток локального репозитория поможет команда

Сделайте коммиты в новой ветке

Измените demo.txt:

Добавьте изменения в рабочую область и зафиксируйте их:

После этого коммита тестовая ветка опережает главную: она включает две ранее сделанные фиксации и одну новую.

Вы можете проверить историю коммитов в тестовой ветке, используя:

Слияние

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

Сначала вернитесь в ветку master:

Затем выполните команду merge:

Слияние должно быть успешным, так как в этом примере нет конфликтов кода. Но в реальных проектах они иногда возникают. Умение разрешать конфликты слияния приходит с опытом.

Запустите git log и вы увидите, что в мастер-ветке теперь также 3 коммита.

Удаленный Репозиторий

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

GitHub

Для создания удаленного репозитория мы будем использовать GitHub. Прежде всего вам нужно создать аккаунт.

После регистрации нажмите на кнопку Начать проект, чтобы создать новый репозиторий. Дайте ему имя git-blog-demo и нажмите кнопку Создать репозиторий.

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

Чтобы указать вашему локальному репозиторию на удаленный, используйте следующую команду:

Git push

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

Он будет помещен из ветки master локального репозитория в ветку master удаленного репозитория.

Дополнительные команды

Git pull

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

Git clone

Используется для клонирования существующего удаленного репозитория на ваш компьютер.

Поздравления

Теперь вы знаете основы использования Git и можете переходить к более продвинутым концепциям!

Полезные ссылки

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *