/ it Новости / Быстрое изучение Git за 30 минут: самое главное

Быстрое изучение Git за 30 минут: самое главное

Быстрое изучение Git за 30 минут: самое главное

1 379 · 10 мая 2019 в 17:35 ·
В этой статье мы расскажем, почему 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 myEmail@example.com


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

Создаем новый репозитарий

Как мы рассказывали ранее, принцип 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.» создает описание всех изменений, которые мы включили в коммит.


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

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

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


  1. Как подключиться к удаленному репозитарию?


Для загрузки данных в удаленный репозитарию сначала нужно к нему подключиться. В нашем примере мы используем адрес 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.


  1. Как отправить изменения в удаленный репозитарий?


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


Отправка коммита осуществляется с помощью команды 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 на удаленном сервере мы можем увидеть с помощью браузера. Важный момент – некоторые сервисы для отправки изменений могут требовать дополнительной аутентификации.


  1. Как клонировать удаленный репозитарий?


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

$ git clone https://github.com/tutorialzine/awesome-project.git


GitHub автоматически создаст новый локальный репозитарий в виде удаленного на собственном сервере.


  1. Как запросить изменения с удаленного репозитария?


В случае, если другим пользователям нет необходимости делать клон удаленного репозитария, а нужно просто получить информацию об изменениях, это можно сделать с помощью команды 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. Они далеко не исчерпывают все возможности этой системы и оставляют большой простор для самосовершенствования.


Больше интересных новостей