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

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

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 и можете переходить к более продвинутым концепциям!

Комментарии (2)

Ваш email не будет опубликован. Все поля обязательны

    git remote add origin [repository url]

    Было бы неплохо, если бы Вы указали примечание, что квадратные скобки не нужны, иначе адрес будет некорректным и появится ошибка после команды «git push -u origin master».
    Кстати, не подскажите, как изменить уже введённый адрес origin? А то я не знал как это сделать и удалил все файлы git из папки и заново всё прописывал. Повторная команда git remote add origin с корректным адресом не работает. (((

    спасибо, добавила примечание 🙂

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

    git remote rm origin

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

    git remote add origin [repository url]