Git (Часть 1 — Введение)

В прошлых заметках я писал о создании блога на движке WordPress. У меня есть несколько учебных проектов, о которых я собираюсь написать. При этом желательно предоставить читателям полный исходный код, поэтому я создам открытый репозиторий на GitHub или BitBucket и установлю на свой ПК систему управления версиями Git.

Чем хороша система управления версиями

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

Книги про Git

Я прочитал две книги про Git:

Последняя книга более исчерпывающая, и ее вполне достаточно, чтобы разобраться в Git.

Установка Git

Git — это разработка Линуса Торвальдса, которая изначально создавалась для Linux.
Есть два способа установить Git на ПК под управлением Windows:

  1. Установить Git в составе программного пакета Cygwin. Cygwin — это эмулятор POSIX-совместимой среды для Windows или, проще говоря, «эмулятор UNIX», который позволяет устанавливать на ПК под управлением Windows программы, изначально предназначавшиеся для работы под управлением Unix-подобной операционной системы — в том числе программу Git.
  2. Установить программный пакет Git for Windows, который, согласно Википедии, использует среду MinGW.

Установка Cygwin

Поскольку я в перспективе собираюсь заняться изучением современного стандарта языка Си и поскольку Windows не поддерживает стандарт POSIX, а Microsoft Visual Studio (среда разработки, которая обычно используется для программирования в Windows) поддерживает только самый первый стандарт языка Си — C89, мне в любом случае понадобится Cygwin (или как минимум MinGW, который можно использовать и отдельно, но который тем не менее тоже входит в состав Cygwin). Поэтому я решил ставить Git в составе Cygwin.
Заходим на сайт Cygwin и скачиваем файл setup-x86.exe (или setup-x86_64.exe, если у вас 64-битная Windows), далее я буду называть его просто setup.exe. На момент написания текста самая свежая версия Cygwin была 2.9.0. Запускаем файл setup.exe. При первом запуске мой антивирус помешал установке, поэтому пришлось его отключить и переустановить Cygwin.
Все настройки в диалоге установки я оставил по-умолчанию. После установки я запустил программу Cygwin Terminal из меню Пуск (за ярлыком Cygwin Terminal скрывается программа mintty.exe).

Проблема с домашней папкой

В терминале я увидел, что домашняя папка у меня C:\Users\<user>\AppData\Roaming\SPB_16.6. Такая домашняя папка мне не понравилась. По идее, домашней должна была быть папка c:\cygwin\home\<user>. Stack Overflow для изменения папки советовал отредактировать файл с:\cygwin\etc\nsswitch.conf, но это мне не помогло. Оказалось, что nsswitch.conf игнорируется в том случае, если в Windows существует переменная окружения HOME — поэтому я ее просто удалил (при помощи панели управления Windows) и это решило проблему.

Установка Git в Cygwin

В Cygwin Terminal я ввел слово git, на что терминал мне ответил команда не найдена. Честно говоря, я ожидал, что в составе Cygwin будет система управления пакетами APT (Advanced Packaging Tool) — ПО, позволяющее устанавливать в систему программы и библиотеки. Я задал гуглу вопрос как установить Git на Cygwin и оказалось, что программы и библиотеки на Cygwin можно устанавливать только при помощи того же файла setup.exe, который мы запускали, чтобы установить Cygwin (надо запустить setup.exe еще раз — да, он на то и рассчитан, что каждый раз, когда вам нужно будет установить какой-то недостающий программный пакет, вы будете запускать setup.exe) В диалоге выбора устанавливаемых пакетов надо отметить галкой пункт git: Distributed version control system из категории Devel.

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

Далее надо создать удаленный репозиторий. Наиболее популярны сейчас два хостинга репозиториев: GitHub и BitBucket (для чего нужны такие хостинги и как сделать свой собственный см. главу Git on Server из книги Pro Git. Я уже пользовался BitBucket, поскольку работал над закрытым проектом, а BitBucket, в отличие от GitHub, позволяет создавать закрытые репозитории бесплатно. Итак, я захожу в свой аккаунт на BitBucket и щелкаю по ссылке Create a new repository. Проект будет посвящен изучению разработки операционной системы, поэтому я называю его OSDevLearning. Язык программирования выбираю Assembly, остальные настройки оставляю по-умолчанию. Следует обратить внимание на URL, при помощи которого я буду ссылаться на удаленный репозиторий из программы Git — это https://dvsav@bitbucket.org/dvsav/osdevlearning.git (это — URL для протокола HTTPS, а вот для протокола SSH URL будет другой — git@bitbucket.org:dvsav/osdevlearning.git).

Создание локального репозитория

Теперь переходим к запуску программы Git. Запускаю Cygwin Terminal. Прежде всего надо сообщить программе Git имя пользователя и адрес электронной почты. Это нужно будет сделать всего один раз (адрес почты и имя пользователя естественно меняем на свои):

git config --global user.email "you@example.com"
git config --global user.name "Ваше Имя"

Теперь я должен клонировать удаленный репозиторий, т. е. скачать файлы проекта с BitBucket на свой ПК.

git clone https://dvsav@bitbucket.org/dvsav/osdevlearning.git

В процессе клонирования программа запрашивает пароль (причем в терминале ввод пароля сбивает с толку: я ввожу пароль, но никакие символы, даже звездочки *, не отображаются).
В результате в моей домашней папке была создана папка osdevlearning, а в ней — папка .git, в которой Git хранит всю служебную информацию для данного репозитория.
Выполняю некие изменения в проекте, например, добавляю в папку osdevlearning файл README.md:

cd osdevlearning
echo "# My project's README" >> README.md

Индексирую сделанные изменения:

git add README.md

Создаю коммит в локальном репозитории:

git commit -m "Initial commit"

Отправляю коммит в удаленный репозиторий:

git push -u origin master

Здесь origin — это обозначение (alias) для удаленного репозитория, а master — название текущей ветки.

В следующей заметке я приведу типичные примеры работы с Git.

Добавить комментарий

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