Быстрое изучение Git за 30 минут: самое главное
В этой статье мы расскажем, почему git не так страшен, как он выглядит с первого взгляда и почему не следует бояться обилия команд и аргументов.
На сегодняшний день git – наиболее совершенный способ работы с версиями проектов с открытым кодом. Его популярность объясняется просто – для начала работы совершенно не обязательно изучать систему полностью, достаточно освоить базовый набор команд, чтобы пользоваться преимуществами этого проекта. Со временем его знание будет расширяться, а пока давайте приступим к изучению необходимого минимума.
Основы
Git – распределенная система хранения контроля версий разрабатываемого программного обеспечения. Она отличается от многочисленных аналогов возможностью сохранять информацию в репозитории на жестком диске, эффективно отслеживать любые сделанные изменения, откатываться на один или несколько шагов назад, если в этом возникнет необходимость.
Код в системе Git можно хранить не только локально. Она позволяет выгружать папки с файлами на так называемые хостинги репозиториев – сайты GitHub или Bitbucket. Благодаря этому над одним проектом может работать неограниченное количество программистов. Причем система фиксирует все изменения и дает возможность моментально вернуться к наиболее удачной версии для ее совершенствования.
Установка git
Для того, чтобы установить git на рабочий компьютер, нужно сделать несколько простых действий. Для разных операционных систем это выглядит так:
- В Linux просто открываем терминал и устанавливаем git с помощью пакетного менеджера в дистрибутиве. Команда для Ubuntu имеет следующий вид:
sudo apt-get install git- Пользователям Windows удобнее всего воспользоваться git for windows, так как он содержит установщик, клиент с графическим интерфейсом и эмулятор bash;
- Для ОS X установите homebrew и после этого наберите в командной строке:
brew install gitНесмотря на то, что можно использовать графический интерфейс, изучите команды. Это сильно расширит ваши возможности.
Настройка имени пользователя и электронной почты
После установки git нам нужно задать имя пользователя и адрес электронной почты – таким образом каждый участник проекта узнает, кто автор изменений. Сделать это очень просто, открываем систему и набираем следующие команды:
git config --global user.name "My Name"
git config --global user.email [email protected]На самом деле, возможностей настроить систему намного больше, но сейчас мы сосредоточены лишь на тех опциях, которые необходимы для начала работы.
Создаем новый репозитарий
Как мы рассказывали ранее, принцип git заключается в том, что история изменений сохраняется прямо в папке проекта. Чтобы инициализировать работу системы, нужно открыть терминал и, зайдя в папку проекта, запустить команду init. Она подключит проект именно к этой папке и создаст скрытую директорию .git, в которой и будет храниться репозитарий с историей изменений и нашими настройками.
На рабочем столе создаем папку git_exercise. Для этого в окне терминала вводим команды:
$ mkdir Desktop/git_exercise/
$ cd Desktop/git_exercise/
$ git initВ ответ система должна выдать что-то похожее на это:
Initialized empty Git repository in /home/user/Desktop/git_exercise/.git/Если получено такое сообщение, это значит, что репозитарий создан, но пока еще пуст. Теперь создаем текстовый файл hello.txt и сохраняем его в директории git_exercise.
Статус репозитария
Чтобы узнать, что происходит в нашем созданном репозитарии – внесены ли изменения, насколько актуальна информация и т.д., воспользуемся командой git status.
Это одна из важнейших команд, так как система отслеживает изменения, а с ее помощью мы узнаем о результатах этого отслеживания. Если мы наберем git status в терминале, то система должна выдать следующее:
$ git status
On branch master
Initial commit
Untracked files:
(use "git add ..." to include in what will be committed)
hello.txtЭтот набор сообщений говорит о том, что git зафиксировал появление файла hello.txt, однако он не отслеживается. Для того, чтобы начать его отслеживание, его следует надлежащим образом подготовить.
Подготовка файлов
Фактически git – это тетрадь, в которую вносятся записи об изменениях. Однако система самостоятельно не может решить, какие именно из них следует фиксировать. Для этого мы должны подготовить файл к коммиту – указать системе, что именно мы хотим отслеживать с помощью системы – файл полностью, его часть или даже отдельные строки.
Чтобы добавить нужные части, воспользуемся командой add. С ее помощью мы можем внести столько отслеживаемых частей файла, сколько нам необходимо. После того, как мы создали этот своеобразный шаблон отслеживания, фиксируем его командой commit. Теперь система знает, что нужно отслеживать.
В нашем примере речь идет о файле hello.txt. Добавим его:
$ git add hello.txtЕсли мы хотим добавить к списку отслеживания все содержимое директории, набираем:
$ git add -AПроверяем статус и получаем ответ:
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: hello.txtОн означает, что система понимает, что мы добавили файл hello.txt к списку отслеживания. На этом этапе мы можем удалить его из него или модифицировать. Если все устраивает, мы должны зафиксировать наше решение и изменить статус файла из подготовленного на отслеживаемый.
Коммит
Итак, мы подготовили наш файл hello.txt к отслеживанию. Теперь мы можем его коммитить. Коммит – это состояние репозитария в определенный момент времени, иными словами – картинка, снимок определенных нами во время подготовки параметров.
Для того, чтобы зафиксировать изменение, нужно его создать – ранее мы сделали это, подготовив файл с помощью команды git add. Значит, можно коммитить:
$ git commit -m "Initial commit."Эта команда создаст коммит, где будут отображены все изменения из области подготовки. Ключ -m и сообщение «Initial commit.» создает описание всех изменений, которые мы включили в коммит.
Правила хорошего тона разработчиков гласят о том, что не нужно лениться делать коммиты, а делать их как можно чаще.
Удаленный репозитарий
Коммит, созданный нами, хранится в репозитарии, привязанном к конкретной папке на нашем компьютере, т.е. является локальным. Это полезно, если мы работаем над проектом самостоятельно. Однако в большинстве случаев возникает необходимость обеспечить доступ к результатам работы или доставить код на сервер, где он будет выполняться.
- Как подключиться к удаленному репозитарию?
Для загрузки данных в удаленный репозитарию сначала нужно к нему подключиться. В нашем примере мы используем адрес https://github.com/tutorialzine/awesome-project, однако пользователь может создать собственный удаленный репозитарий на GitHub, BitBucket или другом подобном сервисе. Это занимает некоторое время, однако в дальнейшем полностью себя оправдывает, тем более, что подобные службы имеют пошаговые инструкции для правильно выполнения нужных действий.
Для того, чтобы связать созданный нами локальный репозитарий с удаленным, выполним такую команду:
# This is only an example. Replace the URI with your own repository address.
$ git remote add origin https://github.com/tutorialzine/awesome-project.gitПервая строка напоминает нам, что URI репозитария, который приведен в примере, нужно изменить на свой.
Иногда бывает так, что проект имеет несколько удаленных репозитариев – в таком случае каждому из них присваивается собственное имя. Главный репозитарий принято называть origin.
- Как отправить изменения в удаленный репозитарий?
Теперь, когда у нас в локальном репозитарии создан коммит и мы подключились к удаленному, можем отправить его на сервер. Мы это будем делать каждый раз, когда хотим обновить данные в удаленном репозитарии.
Отправка коммита осуществляется с помощью команды push, которая имеет два параметра - имя удаленного репозитория (в нашем случае origin) и ветку, в которую необходимо внести изменения (master — это ветка по умолчанию для всех репозиториев).
$ git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/tutorialzine/awesome-project.git
* [new branch] master -> masterЕсли мы все сделали правильно, то отправленный файл hello.txt на удаленном сервере мы можем увидеть с помощью браузера. Важный момент – некоторые сервисы для отправки изменений могут требовать дополнительной аутентификации.
- Как клонировать удаленный репозитарий?
Если у других пользователей возникла необходимость клонировать удаленный репозитарий, они могут получить полностью работоспособную копию при помощи команды clone:
$ git clone https://github.com/tutorialzine/awesome-project.gitGitHub автоматически создаст новый локальный репозитарий в виде удаленного на собственном сервере.
- Как запросить изменения с удаленного репозитария?
В случае, если другим пользователям нет необходимости делать клон удаленного репозитария, а нужно просто получить информацию об изменениях, это можно сделать с помощью команды pull:
$ git pull origin master
From https://github.com/tutorialzine/awesome-project
* branch master -> FETCH_HEAD
Already up-to-date.Она скачивает новые изменения. Так как мы ничего нового не вносили с тех пор, как клонировали проект, изменений, доступных к скачиванию, нет.
Создание веток
Так как над работой над проектом может принимать участие несколько разработчиков, принято вносить изменения каждым из них в свою копию оригинальной версии кода. Это позволяет сохранять рабочий вариант без изменений до тех пор, пока не будет принято решение слить все версии в одну.
Каждая такая копия проекта называется веткой – она изолирована от других и имеет собственную историю.
Наличие веток позволяет обезопасить проект, сравнивать различные версии, вести параллельную разработку.
Функция игнорирования
Git имеет встроенную функцию .gitignore, с помощью которой мы можем предотвратить случайное попадание в git add ненужных файлов, папок и директорий. Очень часто в такой перечень попадают следующие данные:
- Логи;
- Артефакты систем сборки;
- Папки node_modules в проектах node.js;
- Папки, созданные IDE, например, Netbeans или IntelliJ;
- Разнообразные заметки разработчика.
Работает функция .gitignore очень просто:
- Создаем вручную файл под названием .gitignore и сохраняем его в директорию проекта.
- Внутри файла перечисляем названия файлов/папок, которые нужно игнорировать, каждое с новой строки.
- Файл .gitignore добавляем, коммитим и отправляем на сервер, как любой другой файл в проекте. Пример исключения перечисленных выше файлов выглядит так:
*.log
build/
node_modules/
.idea/
my_notes.txtСлэш обозначает игнорирование директорий и всего их содержимого, звездочка – шаблон.
Заключение
Итак, мы вкратце познакомились с основными функциями git. Они далеко не исчерпывают все возможности этой системы и оставляют большой простор для самосовершенствования.
Больше интересных новостей
10 перспективных IT-профессий ближайших лет
Подборка крутых Python библиотек / Пишем 7 программ на Python
Игра на чистом JavaScript за 20 минут
JavaScript фреймворки / Какой учить в 2018 году?