Что нужно, чтобы начать работать с Git и GitHub

Системы управления и контроля версий на сегодня практически обязательны для любого проекта. Одной из известнейших и наиболее популярных систем управления версиями является Git. Рассмотрим работу с Git в связке с GitHub — крупнейшим хостингом для размещения IT-проектов совместной разработки. GitHub позволяет бесплатно размещать на своем сервере проекты с открытым исходным кодом.

В данном примере рассматривается работа с Git на операционной системе Windows.

Что же нужно, для того, чтобы начать практическую работу с Git:

  1. Скачать дистрибутив Git для windows:
  2. Провести установку Git на компьютер пользователя
    1. все опции в процессе инсталляции можно оставить в значениях «по умолчанию»

  1. После установки Git на локальный компьютер, нужно организовать его взаимодействие с сервером GitHub. Это можно сделать несколькими способами, но мы рассмотрим только обмен данными по протоколу ssh. Только этот протокол позволяет как получать данные проекта с сервера, так и отправлять измененные данные на сервер.
    1. Для начала нужно сгенерировать ssh ключи для взаимодействия с GitHub. Это можно сделать с помощью программы Putty.
      1. Запустить puttygen.exe
      2. Создать private-ключ.  Этот ключ будет всегда находится у пользователя.
        1. Generate
          1. Подвигать мышкой для создания ключа
          2. Для лучшей защиты ключа можно ввести пароль, но тогда этот пароль нужно будет вводить каждый раз в начале работы с Git.
          3. В меню выбрать Conversions — Export OpenSSH Key
            1. Сохранить ключ в файле с расширением *.pem
      3. Создать public-ключ. Этот ключ устанавливается на сервер.
        1. Зайти на сайт https://github.com/
          1. Создать аккаунт разработчика (если у вас его еще нет).
          2. Зайти в аккаунт
            1. Профиль — Settings — SSH and GPG keys
              1. New SSH key
              2. Указать в полях:
                1. Title: пустое
                2. Key: скопировать сюда текст ключа из puttygen.exe из поля Public key for pasting into OpenSSH authorized_keys file
          3. Сохранить public-ключ.
  2. Всю работу с Git будем вести из командной строки консоли. Для удобства можно сказать графическую оболочку, вроде TortoiseGit, но и в работе с консолью нет ничего сильно сложного.
    1. Запустить командную оболочку Git Bash, кликнув по созданному во время инсталляции ярлыку.
  3. Для начала работы с Git нужно провести несколько простейших начальных настроек

Проверка текущих настроек:

Для начала нужно указать имя пользователя и email (указывать нужно свои данные):

  1. Для обмена данными между локальным Git и удаленным сервером GitHub, нужно настроить автозапуск ssh-агента при старте оболочки Git Bash и регистрацию ранее созданного private-ключа для авторизации.

Создать файл .profile в директории C:/Users/имя пользователя, выполнив команду:

Добавить в созданный файл следующий текст: (запуск ssh-агента и добавление ключа по указанному пути). Нужно указать правильный путь к private-ключу, созданному ранее.

Настройка закончена, можно приступать к работе с проектом.

  1. Создать новый проект (пустой) на сайте GitHub и клонировать его на локальный компьютер пользователя:

Зайти в аккаунт на Git Hub и создать новый проект. Для того, чтобы получить его локальную копию на компьютере пользователя — необходимо клонировать его:

Создать директорию для размещения своих проектов. Перейти в нее в командной оболочке Git Bash:

В проекте на сайте GitHub получить путь для клонирования. Для этого нужно перейти в проект и нажать на кнопку Clone or Download, выбрать use SSH и запомнить предлагаемый путь. Он будет выглядеть примерно так: git@github.com:Ivanov/Test_project.git

Далее в командной оболочке Git Bush нужно выполнить команду клонирования, указав путь к проекту.

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

  1. Начнем работу с самим проектом:

Перейти в директорию проекта:

Просмотр информации о состоянии удаленного репозитория (проекта на сайте Git Hub):

Всегда перед началом работы с проектом первым делом необходимо получить с удаленного репозитория (в нашем случае — проекта на сайте Git Hub) все внесенные туда изменения. Это нужно, чтобы работать с актуальной версией кода:

После того, как данные в локальном проекте обновлены, можно начинать работу с кодом — вносить изменения, дополнения, создавать и удалять файлы проекта и т.д.

  1. После окончания работы с кодом проекта необходимо отправить все изменения в удаленный репозиторий.

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

Если был создан новый файл с кодом (его имя при выполнении git status будет в секции untracked), нужно этот файл добавить в git (индексировать):

Фиксация изменений в локальной копии: (с пустым комментарием изменения не зафиксируются)

Отправка зафиксированных изменений в удаленный репозиторий:

  1. Исключение файлов из работы с git.

Если нужно, чтобы определенные указанные файлы не отправлялись в удаленный репозиторий — в корне проекта создать файл .gitignore и включить его в проект:

Внести в него файлы и директории проекта, которые не должны попадать в удаленный репозиторий. Например для проекта на python (PyCharm IDE) содержимое .gitignore может быть таким (указанные директории будут игнорироваться):

Закоммитить .gitignore и отправить в репозиторий:

  1. Если проект опубликован — в него нельзя вносить никакие изменения (кроме самых простейших), чтобы не испортить опубликованный код. Поэтому любая работа с опубликованным проектом должна строиться на использовании «ветвей» (branches). «Ветвь» — это отдельная копия всех файлов проекта, в которую можно вносить изменения и которая может быть в дальнейшем как слита с проектом после завершения внесения изменений, так и при необходимости удалена без последствий для основного кода проекта.
    Создать новую ветку (Git переключится на нее). Вместо branch_name нужно задать уникальное имя для новой ветки. Через него будет производится работа с веткой.

Коммит и отправка только этой ветки в удаленный репозиторий (в удаленном репозитории эта ветка будет автоматически создана):

После того, как работа с веткой закончена, нужно сделать слияние ветки с основным кодом. Для этого нужно переключиться на ту ветку в которую надо сделать слияние (master), выполнить слияние, удалить временную ветку, закоммитить изменения, обновить код на удаленном репозитории и удалить временную ветку на удаленном репозитории:

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