Системы управления и контроля версий на сегодня практически обязательны для любого проекта. Одной из известнейших и наиболее популярных систем управления версиями является Git. Рассмотрим работу с Git в связке с GitHub — крупнейшим хостингом для размещения IT-проектов совместной разработки. GitHub позволяет бесплатно размещать на своем сервере проекты с открытым исходным кодом.
В данном примере рассматривается работа с Git на операционной системе Windows.
Что же нужно, для того, чтобы начать практическую работу с Git:
- Скачать дистрибутив Git для windows:
- Провести установку Git на компьютер пользователя
- все опции в процессе инсталляции можно оставить в значениях «по умолчанию»
- После установки Git на локальный компьютер, нужно организовать его взаимодействие с сервером GitHub. Это можно сделать несколькими способами, но мы рассмотрим только обмен данными по протоколу ssh. Только этот протокол позволяет как получать данные проекта с сервера, так и отправлять измененные данные на сервер.
- Для начала нужно сгенерировать ssh ключи для взаимодействия с GitHub. Это можно сделать с помощью программы Putty.
- Запустить puttygen.exe
- Создать private-ключ. Этот ключ будет всегда находится у пользователя.
- Generate
- Подвигать мышкой для создания ключа
- Для лучшей защиты ключа можно ввести пароль, но тогда этот пароль нужно будет вводить каждый раз в начале работы с Git.
- В меню выбрать Conversions — Export OpenSSH Key
- Сохранить ключ в файле с расширением *.pem
- Generate
- Создать public-ключ. Этот ключ устанавливается на сервер.
- Зайти на сайт https://github.com/
- Создать аккаунт разработчика (если у вас его еще нет).
- Зайти в аккаунт
- Профиль — Settings — SSH and GPG keys
- New SSH key
- Указать в полях:
- Title: пустое
- Key: скопировать сюда текст ключа из puttygen.exe из поля Public key for pasting into OpenSSH authorized_keys file
- Профиль — Settings — SSH and GPG keys
- Сохранить public-ключ.
- Зайти на сайт https://github.com/
- Для начала нужно сгенерировать ssh ключи для взаимодействия с GitHub. Это можно сделать с помощью программы Putty.
- Всю работу с Git будем вести из командной строки консоли. Для удобства можно сказать графическую оболочку, вроде TortoiseGit, но и в работе с консолью нет ничего сильно сложного.
- Запустить командную оболочку Git Bash, кликнув по созданному во время инсталляции ярлыку.
- Для начала работы с Git нужно провести несколько простейших начальных настроек
Проверка текущих настроек:
1 |
git config --list |
Для начала нужно указать имя пользователя и email (указывать нужно свои данные):
1 |
git config --global user.name "Ivan Ivanov" |
1 |
git config --global user.email ivan_ivanov@yandex.ru |
- Для обмена данными между локальным Git и удаленным сервером GitHub, нужно настроить автозапуск ssh-агента при старте оболочки Git Bash и регистрацию ранее созданного private-ключа для авторизации.
Создать файл .profile в директории C:/Users/имя пользователя, выполнив команду:
1 |
echo >> ~/.profile |
Добавить в созданный файл следующий текст: (запуск ssh-агента и добавление ключа по указанному пути). Нужно указать правильный путь к private-ключу, созданному ранее.
1 2 3 |
#! /bin/bash eval `ssh-agent -s` ssh-add d:/git/git_keys/ivanov.pem |
Настройка закончена, можно приступать к работе с проектом.
- Создать новый проект (пустой) на сайте GitHub и клонировать его на локальный компьютер пользователя:
Зайти в аккаунт на Git Hub и создать новый проект. Для того, чтобы получить его локальную копию на компьютере пользователя — необходимо клонировать его:
Создать директорию для размещения своих проектов. Перейти в нее в командной оболочке Git Bash:
1 |
cd d:/Projects/Ivanov/ |
В проекте на сайте GitHub получить путь для клонирования. Для этого нужно перейти в проект и нажать на кнопку Clone or Download, выбрать use SSH и запомнить предлагаемый путь. Он будет выглядеть примерно так: git@github.com:Ivanov/Test_project.git
Далее в командной оболочке Git Bush нужно выполнить команду клонирования, указав путь к проекту.
1 |
git clone git@github.com:Ivanov/Test_project.git |
В результате в директории проектов на локальном компьютере будет создана директория Test_project и в нее будут закачаны файлы проекта с Git Hub.
- Начнем работу с самим проектом:
Перейти в директорию проекта:
1 |
cd d:/Projects/Ivanov/Test_project/ |
Просмотр информации о состоянии удаленного репозитория (проекта на сайте Git Hub):
1 |
git remote show origin |
Всегда перед началом работы с проектом первым делом необходимо получить с удаленного репозитория (в нашем случае — проекта на сайте Git Hub) все внесенные туда изменения. Это нужно, чтобы работать с актуальной версией кода:
1 |
git pull origin |
После того, как данные в локальном проекте обновлены, можно начинать работу с кодом — вносить изменения, дополнения, создавать и удалять файлы проекта и т.д.
- После окончания работы с кодом проекта необходимо отправить все изменения в удаленный репозиторий.
Для того, чтобы просмотреть, были ли какие-то изменения, которые над отправить в удаленный репозиторий:
1 |
git status |
Если был создан новый файл с кодом (его имя при выполнении git status будет в секции untracked), нужно этот файл добавить в git (индексировать):
1 |
git add filename.txt |
Фиксация изменений в локальной копии: (с пустым комментарием изменения не зафиксируются)
1 |
git commit -a -m 'comment' |
Отправка зафиксированных изменений в удаленный репозиторий:
1 |
git push origin |
- Исключение файлов из работы с git.
Если нужно, чтобы определенные указанные файлы не отправлялись в удаленный репозиторий — в корне проекта создать файл .gitignore и включить его в проект:
1 2 3 |
cd d:/Projects/Ivanov/Test_project/ echo >> .gitignore git add .gitignore |
Внести в него файлы и директории проекта, которые не должны попадать в удаленный репозиторий. Например для проекта на python (PyCharm IDE) содержимое .gitignore может быть таким (указанные директории будут игнорироваться):
1 2 |
.idea/ __pycache__/ |
Закоммитить .gitignore и отправить в репозиторий:
1 2 |
git commit -a -m 'gitignore updated' git push origin |
- Если проект опубликован — в него нельзя вносить никакие изменения (кроме самых простейших), чтобы не испортить опубликованный код. Поэтому любая работа с опубликованным проектом должна строиться на использовании «ветвей» (branches). «Ветвь» — это отдельная копия всех файлов проекта, в которую можно вносить изменения и которая может быть в дальнейшем как слита с проектом после завершения внесения изменений, так и при необходимости удалена без последствий для основного кода проекта.
Создать новую ветку (Git переключится на нее). Вместо branch_name нужно задать уникальное имя для новой ветки. Через него будет производится работа с веткой.
1 |
git checkout -b branch_name |
Коммит и отправка только этой ветки в удаленный репозиторий (в удаленном репозитории эта ветка будет автоматически создана):
1 2 |
git commit -a -m 'comment' git push origin branch_name |
После того, как работа с веткой закончена, нужно сделать слияние ветки с основным кодом. Для этого нужно переключиться на ту ветку в которую надо сделать слияние (master), выполнить слияние, удалить временную ветку, закоммитить изменения, обновить код на удаленном репозитории и удалить временную ветку на удаленном репозитории:
1 2 3 4 5 6 |
git checkout master git merge branch_name git branch -d branch_name git commit -a -m 'comment' git push origin git push origin :branch_name |
Если изменения в ветке не нужно включать в основной код, ее нужно просто удалить без предварительного слияния:
1 2 3 |
git branch -d branch_name git commit -a -m 'comment' git push origin :branch_name |