Данная статья является попыткой осмыслить (в первую очередь для себя, конечно) такой вопрос, как создание git-репозитория на GitHub, клонирование этого репозитория на локальный компьютер, внесение изменений в клонированный репозиторий, отправка изменений обратно на GitHub.
Вот такие получаются шаги, которые нужно осветить. Profit у всех этих сложностей, описанных мною выше, один - но большой! Заключается он в том, что проект, над которым вы работаете (даже в гордом одиночестве) находится на удаленном сервере, к которому можно подключиться из любого места и с любой машины. Так как он находиться на remote server, то с ним ничего не случиться, даже если ваша машина упадет\утонет\разобьется.
В статье большая часть времени будет посвящена автоматизации процесса авторизации на сервисе GitHub с помощью такой вещи, как ssh-ключи. Такие ключи предназначены как раз для возможности авторизации пользователя на каком-либо сервисе, без необходимости каждый раз вводить логин\пароль. Естественно, на стороне сервиса должна быть настроена такая возможность - на GitHub она настроена и даже является почти обязательным условием настройки аккаунта.
Все действия, описанные в этой статье, будут производиться под операционной системой Linux Mint 17 Cinnamon, в консоли. Поэтому пользователи Mac OS X найдут для себя почти все идентичным. Система Windows остается в стороне.
Создание SSH-ключей под Linux
Первоначально необходимо создать (если их еще нет) ssh-ключи, которые будем использоваться для авторизации на GitHub. В системе Linux такие ключи расположены в домашней директории пользователя и выглядят примерно так:
Один из этих ключей
- это приватный ключ, который должен храниться только у пользователя. Другой ключ 1
id_rsa
- это публичный ключ, который предоставляется всем и который я отправлю на GitHub. Представленные выше имена ключей являются создаваемыми по умолчанию, но можно указать и свои собственные.1
id_rsa.pub
Если показанная выше команда “скажет” вам, что директории
не существует, то это означает, что у вас с системе установлен пакет SSH, отвечающий за создание и обработку ssh-ключей.1
.ssh
Установка пакета SSH
Под Linux Mint его нужно установить командой:
Создание пары ssh-ключей
Теперь можно приступать к созданию пары ssh-ключей. Выполняется это командой:
Чтобы было немного понятно, что это я сделал в данной команде, немного расшифрую ее. Утилита
входит в комплект пакета 1
ssh-keygen
и предназначена для одной цели - создания ssh-ключей. Часть команды - 1
ssh
- указывает, что необходимо создать ssh-ключи типа 1
-t rsa
.1
rsa
Обязательный параметр
- электронный адрес, к которому “привязывается” создаваемый ssh-ключ; данный email будет также использоваться мною для регистрации на GitHub.1
"g***e@gmail.com"
Как только будет введена представленная выше команда, утилита
запросит имя файла и местоположение для создаваемых ssh-ключей. Можно ничего не вводить, а просто нажать Enter. В этом случае программулька создаст и положит их по пути по умолчанию (который показан ею в скобочках):1
ssh-keygen
Утилита задаст еще один вопрос, который крайне не рекомендуется игнорировать:
Здесь
- это пароль к создаваемым ssh-ключам. Каждый раз, когда придется использовать эти ключи, нужно вводить данный пароль. Это обезопасит их в случае кражи. В качестве пароля можно использовать любую текстовую строку.1
passphrase
После успешного ввода
ssh-ключи будут созданы:1
passphrase
В состав пакета
входит утилита 1
ssh
, задача которой в управлении созданными ssh-ключами. Передадим ей в пользование только созданные мною ssh-ключи:1
ssh-agent
Можно посмотреть, что утилита
“подхватила” и распознала предоставленные ею ssh-ключи:1
shh-add
Под операционную систему Linux имеется консольная утилита
, которая умеет получать содержимое любого файла и отправлять это содержимое в буфер обмена, и все это в консоли. По умолчанию такой утилиты нет в системе (в том числе и у меня), поэтому первоначально установлю ее:1
xclip
… а затем передам ей на вход содержимое публичного ключа
, который буду применять на сервисе GitHub:1
id_rsa.pub
Если вам, уважаемый читатель, такой путь покажется слишком сложным, то можно открыть файл
в любом редакторе кода и скопировать его содержимое в буфер обмена.1
id_rsa.pub
Добавление ssh-ключа на GitHub
Переходим на сервис GitHub и создаем на нем новую учетную запись. Описывать процесс создания такой записи на GitHub не буду, так как там все просто. Более интересный момент - это добавление ssh-ключа в профиль пользователя GitHub.
Для этого нажимаю на значок шестеренки в правом верхнем углу окна браузера - настройки профиля пользователя. В открывшемся окне (в его левой части) находим строку
и нажимаем ее:1
SSH key
Откроется окно для добавления новых ssh-ключей в учетную запись пользователя на GitHub. Здесь все элементарно просто - нажимаем кнопку
. В поле 1
Add SSH key
вводим название (произвольное) для импортируемого ssh-ключа.1
Title
В поле
просто нажимаем Ctrl+V - содержимое буфера обмена (которое я получил ранее с помощью утилиты 1
Key
) вставиться в это поле:1
xclip
Жму на зеленую кнопку
внизу окна. Ключ добавлен на GitHub и появиться в списке SSH-ключей:1
Add key
Проверка SSH-соединения с GitHub
В предыдущих шагах мною были созданы пара ssh-ключей, а также учетная запись на GitHub. В эту учетную запись был импортирован публичный ssh-ключ. Теперь неплохо было бы проверить, что все шаги пройдены мною успешно и ssh-связь с сервисом GitHub устанавливается. Проще сказать - что сервис GitHub авторизует меня у себя с помощью ssh-ключей.
Для этой цели ввожу команду:
На ошибку в строке
не стоит обращать внимание. В запросе командной строки печатаем 1
The authenticity of host 'github.com (192.30.252.131)' can't be established.
и получаем:1
yes
Отлично! GitHub “узнал” меня и поприветствовал в строке
. Это говорит о том, что ssh-соединение моей машины с GitHub установлено успешно и GitHub авторизует меня.1
Hi gearmobile! You've successfully authenticated, but GitHub does not provide shell access.
Однако, при настройке ssh-соединения возможны и ошибки. В этом случае может помочь статья - Error: Permission denied (publickey).
Создание нового репозитория на GitHub
Создаем новый репозиторий на GitHub. Ввожу новое уникальное имя для репозитория, краткое его описание и включаю галочку “Initialize this repository with a README”:
Отлично! На GitHub я только что создал новый репозиторий
. Теперь можно скопировать (склонировать) его на свою локальную машину командами:1
arbeit
Переходим в локальную копию репозитория
. Вношу изменения, а затем последовательно:1
arbeit
Команда
фиксирует изменения в локальном репозитории. Команда 1
git commit -m 'Added changes'
отправляет внесенные и зафиксированные изменения в локальном репозитории на удаленный репозиторий.1
git push
Вот, таким образом я наладил Git-работу своей машины с GitHub.