Git — это распределенная система контроля версий с открытым исходным кодом. Описание довольно сложное, давайте разберем его по частям:
- Система контроля: Git отслеживает и хранит ваш контент. Чаще всего от используется для программного кода.
- Система контроля версий: код, который хранится в Git может изменяться и добавляться. Часто над одним проектом параллельно работают несколько программистов. Система контроля версий сохраняет историю изменений и позволяет удобно с ней работать. Кроме того в Git есть такие удобные вещи как ветки и слияния.
- Распределенная система контроля версий: в Git есть удаленный репозиторий, который располагается на сервере, и локальный репозиторий на машине каждого разработчика. Это значит, что код не только хранится на центральном сервере. На каждом компьютере есть его полная копия.
Зачем вообще нужны системы контроля версий?
В реальном мире над проектами обычно параллельно трудятся сразу несколько разработчиков. Так как они имеют дело с одним и тем же кодом, при его изменении возможны конфликты. Git позволяет решать эту проблему.
Кроме того, часто изменяются требования к продукту. С системой контроля версий легко отменить внесенные изменения и вернуться к более старой версии.
И наконец, иногда требуется объединить в одну кодовую базу несколько параллельных проектов. В этом очень помогает концепция веток в Git.
Начинаем использовать Git
Установка
Здесь вы найдете детальную инструкцию по установке Git на любую операционную систему.
Проверьте установку, запустив в терминале команду
git --version
Создание локального репозитория
Создайте отдельную папку для вашего проекта. Давайте для примера назовем ее simple-git-demo
.
Зайдите в нее и добавьте локальный git-репозиторий с помощью следующих команд:
cd simple-git-demo
git init
Немного кода
Создайте новый файл demo.txt
в папке проекта и запишите в него что-нибудь:
Initial content
Вместо реального кода мы будет работать с обычным текстом. Это поможет сосредоточиться на концепциях Git, не отвлекаясь на специфические особенности языков программирования.
Работа с кодом и сохранение изменений
Добавление порции кода в локальный репозиторий называется коммитом, или фиксацией. До коммита код находится в «рабочей» или «промежуточной» области (staging area). Здесь можно отслеживать все файлы, которые должны быть зафиксированы.
Файлы, которые не добавлены в промежуточную область, не могут быть зафиксированы.
Добавление в рабочую область (staging)
Для добавления файла в промежуточную область используется следующая команда:
git add demo.txt
Можно добавить сразу несколько:
git add file1 file2 file3
Чтобы добавить все файлы внутри директории проекта, используйте:
git add .
Обращайтесь с этой командой осторожно, так как она действительно добавляет ВСЕ файлы и папки в промежуточную область.
Фиксация изменений (commiting)
Чтобы сделать коммит, нужно выполнить команду:
git commit -m "Initial Commit"
«Initial Commit» — это сообщение фиксации. Используйте понятные и отражающие суть изменений сообщения.
Git status и git log
Теперь изменим demo.txt
:
Initial Content
Adding more Content
Статус
git status
показывает, какие файлы были изменены и какие файлы находятся в промежуточной области. Команда выводит и другую информацию, которую мы пока можем проигнорировать.
git status
Мы увидим, что demo.txt
изменен, но еще не находится в рабочей области. Давайте добавим его:
git add demo.txt
и зафиксируем изменения:
git commit -m "demo.txt file is modified"
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
. Этот вопрос будет рассмотрен позднее, а пока повторим схему с картинки.
Создайте новую ветку в локальном репозитории
git branch test
Ветка создана, но мы все еще находимся в контексте ветки master. Чтобы переключиться на тестовую, нужно использовать команду
git checkout test
Вот теперь мы находимся на ветке test
.
Увидеть полный список все веток локального репозитория поможет команда
git branch
Сделайте коммиты в новой ветке
Измените demo.txt
:
Initial Content
Adding more Content
Adding some Content from test Branch
Добавьте изменения в рабочую область и зафиксируйте их:
git add demo.txt
git commit -m "Test Branch Commit"
После этого коммита тестовая ветка опережает главную: она включает две ранее сделанные фиксации и одну новую.
Вы можете проверить историю коммитов в тестовой ветке, используя:
git log
Слияние
Предположим, мы закончили какой-то этап разработки в тестовой ветке и теперь хотим вернуть весь код в главную, то есть объединить их (смержить).
Сначала вернитесь в ветку master:
git checkout master
Затем выполните команду merge
:
git merge test
Слияние должно быть успешным, так как в этом примере нет конфликтов кода. Но в реальных проектах они иногда возникают. Умение разрешать конфликты слияния приходит с опытом.
Запустите git log
и вы увидите, что в мастер-ветке теперь также 3 коммита.
Удаленный Репозиторий
До сих пор мы работали только в локальном репозитории. Обычно так и происходит: разработчик пишет код на своем компьютере. Но затем он должен отправить свои изменения в удаленный репозиторий, чтобы их могли увидеть другие разработчики.

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

На изображении выделен URL вашего репозитория, который вы должны увидеть на странице.
Чтобы указать вашему локальному репозиторию на удаленный, используйте следующую команду (вместе [repository url] введите адрес своего репозитория без квадратных скобок):
git remote add origin [repository url]
Git push
Теперь отправим весь код из локального репозитория в удаленный:
git push -u origin master
Он будет помещен из ветки master локального репозитория в ветку master удаленного репозитория.
Дополнительные команды
Git pull
Используется для извлечения последних изменений из удаленного репозитория в локальный. Удаленный код может обновляться другими разработчиками, поэтому необходимо поддерживать локальную версию в актуальном состоянияя:
git pull origin master
Git clone
Используется для клонирования существующего удаленного репозитория на ваш компьютер.
git clone [repository url]
Поздравления
Теперь вы знаете основы использования Git и можете переходить к более продвинутым концепциям!
3 комментария