Git: что это такое, как пользоваться, базовые команды - Разработчик Павел Скляр

@pavelsklyar | 10 июл 2020 в 16:10

Git: что это такое, как пользоваться, базовые команды

Что такое система контроля версий и для чего она нужна?

Система контроля версий (VCS, Version Control System) - это система, которая позволяет отслеживать все изменения файловой системы и хранить их. При этом менять информацию в этом файле могут сразу несколько человек. С помощью системы контроля версий мы в любой момент можем перейти к более старой или наоборот, к более новой версии системы.

Зачем нужны все эти сложные махинации? Допустим, вы командой разрабатываете какой-либо продукт. Каждый её член отвечает за свою часть: кто-то занимается разработкой определённого компонента, кто-то оптимизирует работу продукта и так далее. Все эти люди могут работать с одними и теми же файлами. Встаёт вопрос, как отслеживать изменения конкретного разработчика и устранять конфликты, когда несколько человек работают с одним файлом? С помощью систем контроля версий.

Давайте рассмотрим пример. В нашей команде два крутых разработчика: Разработчик #1 и Разработчик #2. Чем нам может помочь VCS?

Первый внёс изменения в файл filename и отправил их на сервер контроля версий. В это же время, Разработчик #2 так же обновил этот файл. При попытке отправить свои изменения в систему контроля версий, он получит ошибку, в которой говорится, что файловая система на сервере уже обновлена. Ему нужно скачать все изменении и посмотреть, какие файлы будут конфликтовать. После обновления своей версии он увидит filename, который был обновлён им и Разработчиком #1.

В файле будут две версии - по каждой от разработчика. Теперь задача Разработчика #2 обновить свой код с учётом полученных данных, и только после этого отправлять изменения на сервер.

Как с этим работать?

Для начала, ваш код нужно где-то хранить. Для этого есть различные веб-сервисы. Самые популярные из них, это GitHub, GitLab и Bitbucket. Особой разницы между ними нет, потому что основаны они на одной и той же системе контроля версий - Git. Свой пример я буду показывать на GitHub.

Нам нужно создать новый репозиторий. Заполняем поля Repository name (название), Description (описание, необязательно к заполнению) и определяем, публичный он будет или приватный. Просматривать публичный репозиторий может любой желающий, в то время как для просмотра приватного нужно получить доступ. После этого нажимаем на Create repository.

P.S. Можно хранить всё локально у себя на компьютере и не добавлять внешний репозиторий. Единственное отличие здесь в том, что к файлам в таком случае будут иметь доступ только пользователи вашего компьютера.

Команды

Все описанные ниже команды нужно выполнять через терминал (MacOS, Linux) или командную строку (Windows). Для этого у вас должен быть установлен Git. Как это сделать, можно прочитать здесь.

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

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

$ git init
$ git add .
$ git commit -m "First commit"
$ git remote add origin <link>
$ git push -u origin master

Разберём подробнее команды.
git init - добавляет систему контроля версий в ваш проект. Если вы используете какую-либо IDE, она, скорее всего, подсветит вам все файлы, которые были изменены.
git add . - добавляет все файлы в текущей папке и подпапках в систему контроля версий. Если вы хотите добавить конкретный файл, то вместо точки нужно указать путь до него относительно текущей директории, а также само название файла с расширением. Например, git add app/Controller.php.
git commit -m "First commit" - записывает все изменения (добавленные с помощью предыдущей команды) в отдельный коммит (пакет, версию). По этому коммиту в будущем можно будет отследить все изменения в файлах относительно предыдущего коммита. В кавычках пишется название коммита, куда нужно записать, что конкретно вы изменили/добавили. Например, Добавлена форма регистрации или что-то такое, что в будущем поможет вам быстро понять, что вы здесь сделали.
git remote add origin <link> - привязывает ваш локальный репозиторий (папку с проектом) к удалённому. Здесь - ссылка на ваш репозиторий с расширением .git. Она доступна после создания репозитория на любой платформе.
git push -u origin master - отправляет изменения на сервер и создаёт там новую ветку master. О ветках расскажу чуть позже, пока что просто примите эту информацию как она есть.

Всё, теперь, если вы зайдёте на страницу своего репозитория, то увидите все файлы вашего проекта.

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

$ git remote add origin <link>
$ git push -u origin master

Что делать дальше?

Теперь все новые файлы будут помечаться как Untracked (не добавлены в VCS), изменённые как Modified, удалённые как Deleted.

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

Добавление и коммит

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

$ git add .
$ git commit -m "Commit name"
$ git push

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

$ git commit -am "Commit name"

Стягивание изменений

Если вам нужно подтянуть изменения из репозитория, воспользуйтесь командой

$ git pull

Текущее состояние

Можно посмотреть текущее состояние с помощью команды

$ git status

О ветках и работе с ними я расскажу в следующей статье, потому что это очень обширная тема.

Теги: git , vcs , система контроля версий

66