Git для начинающих. Урок 2.
Создание и клонирование репозитория
Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.
Это каталог в файловой системе, где хранится информация о проекте:
- файлы и папки проекта
- история проекта
- настройки проекта
- служебная информация
Информация о репозитории хранится в скрытой папке .git в корне проекта.
Начало
Используйте SSH вместо HTTPS
Чтобы настроить на локальной машине разные аккаунты, мы будем использовать не обычное HTTPS-соединение, а SSH-ключи. Такой подход имеет свои достоинства и недостатки. GitHub периодически меняет свое мнение о том, какой вариант лучше, но вот вам цитата из документации GitHub, поясняющая, почему в данном случае нужно использовать именно SSH-ключи.
«Используя SSH-протокол, вы можете устанавливать соединение и аутентифицироваться на удаленных серверах и сервисах. При помощи SSH-ключей можно устанавливать соединение с GitHub, не указывая каждый раз свой логин и токен личного доступа».
Нам это идеально подходит. Мы ведь не хотим каждый раз заново проходить аутентификацию; напротив, мы хотим отправлять свои коммиты в репозитории так, будто мы вообще не переключались между аккаунтами. Но как это сделать?
Небольшое примечание. Если вы хотите подробнее узнать о разнице между HTTPS и SSH, она отлично описана в документации GitHub.
Разбираемся в структуре SSH на вашей локальной машине
Если говорить по-простому, все это будет работать благодаря созданию уникальных SSH-ключей, которые мы укажем в GitHub-аккаунтах. Github-у не придется каждый раз запрашивать логин с паролем, вместо этого он сможет верифицировать вас по SSH-ключу. Звучит отлично, правда?
Но где на вашей машине хранятся эти ключи?
Они хранятся в директории по адресу ~/.ssh . Там и будет все настраиваться. Приступим!
Примечание редакции Techrocks. У нас есть еще одна статья о SSH-ключах. Возможно, вам будет интересно.
Этот шаг позволяет GitHub идентифицировать нашу машину и авторизовать ее, чтобы каждый раз не вводить идентификатор и пароль.
Следуйте инструкциям здесь, чтобы добавить ключи к соответствующим учетным записям.
Чтобы избежать использования рабочей учетной записи на клоне для личного репо, вы можете изменить клон с: git clone git@github.com:user/repo.git на git clone git@github-personal.com:user/repo.git
С этим все готово. Сообщите мне, если есть проблема или я что-то пропустил.
Сохраняем открытый ключ в профиле на GitHub
Теперь содержимое файла id_rsa.pub, которое мы скопировали в буфер обмена, нужно сохранить в настройках своего профиля на GitHub.
Для этого зайдем на GitHub под своей учётной записью (в нашем примере это пользователь andpop), кликнем на треугольнике справа от своей аватарки в верхнем правом углу окна и в открывшемся списке выберем пункт Settings.
В открывшемся окне нужно выбрать пункт SSH and GPG keys:
Появится список SSH-ключей, которые мы регистрировали для нашей учётной записи ранее (их может быть несколько), и кнопка New SSH key для ввода нового ключа:
Для регистрации нового ключа нужно:
1. В поле Title ввести его название. Оно нужно только для информации о том, для какого компьютера вы добавили ключ, больше мы его нигде использовать не будем.
2. В поле Key вставить содержимое открытого ключа, который мы заранее сохранили в буфере обмена.
После нажатия кнопки Add SSH key GitHub может запросить ваш пароль для подтверждения регистрации нового ключа:
На этом настройка SSH-ключей для вашей первой учетной записи завершена, теперь изменения из локального репозитория будут сохраняться на GitHub без запроса имени и пароля пользователя.
Отметим, что при первом обращении к GitHub с использованием SSH-ключей в консоли вы получите такое сообщение:
Пугаться этого не стоит, дело в том, что при SSH-соединении не только сервер удостоверяется в подлинности клиента, но и клиент проверяет, знаком ли ему данный сервер, заходил ли он на него ранее. Поэтому при первом подключении к серверу GitHub нужно ответить yes, при этом уникальная комбинация символов, идентифицирующая сервер (RSA key fingerprint), сохранится на нашем компьютере, а сервер GitHub будет добавлен в список известных хостов. При всех последующих обращениях к GitHub этот вопрос задаваться не будет.
Ваши почтовые адреса
GitHub использует ваш почтовый адрес для привязки ваших Git коммитов к вашей учётной записи. Если вы используете несколько почтовых адресов в своих коммитах и хотите, чтобы GitHub работал с ними корректно, то вам нужно будет добавить все используемые почтовые адреса в секцию под названием «Почтовые адреса» («Emails»), расположенную на вкладке «Администрирование» («Admin»).
Как можно видеть на рисунке Почтовые адреса, у почтовых адресов имеются несколько состояний. Верхний почтовый адрес подтверждён и является основным для пользователя, это тот самый адрес, куда будут направляться оповещения, а также остальные уведомления. Второй адрес тоже подтверждён, и так же может быть назначен в качестве основного. Последний адрес не подтверждён, это значит, что вы не можете использовать его в качестве основного и получать на него уведомления. При отправке коммита в любой из репозиториев, GitHub распознает один из указанных почтовых адресов и автоматически привяжет этот коммит к вашей учетной записи.
Отправка в удаленный репозиторий
Вернемся теперь к аккаунту на GitHub. Мы создали репозиторий example, и если зайти по адресу https://github.com/javakitt/example и нажать зеленую кнопку Clone, мы увидим, что GitHub предлагает два разных протокола для обмена: https и ssh.
Протоколы HTTPS и SSH
Это не обязательно для начала работы, но чтобы использовать протокол ssh (а не https), в настройках аккаунта надо вставить ssl-ключ. Закрытый ключ хранится у вас на компьютере, а открытый — в аккаунте, логин и пароль при обмене вводить не придется.
Но мы будем сейчас использовать протокол htpps. Тут придется при обмене с сервером вводить имя и пароль, но можно это сделать единожды, а потом брать из хранилища.
Обратите внимание, что при переключении между https и ssh (см. переключатель у кнопки Clone) меняются адреса репозиториев. Наш будет https://github.com/javakitt/example.git. Эти адреса годятся, разумеется, не только для клонирования репозитория, но и для отправки туда изменений.
Также учтите, что можно обмениваться с одним и тем же репозиторием как по протоколу https, так и по ssh. Например, на одном компьютере использовать ssl-ключ, а на другом ввести и запомнить логин-пароль для обмена. Просто псевдонимы будут назначены разным адресам.
Создадим псевдоним
Обычно создают псевдоним origin репозитория:
Мы создали псевдоним origin.
Отправим изменения
Теперь можно отправить изменения, пользуясь псевдонимом:
Здесь origin — псевдоним репозитория, а master — имя ветки. Так называется по умолчанию основная ветка в Git-репозитории. Как уже говорилось, при записи в репозиторий потребуются учетные данные — откроется окно браузера, в которое нужно ввести имя и пароль учетной записи GitHub. Впоследствии их можно запомнить, чтоб каждый раз не вводить. Запоминаются они так:
Эту команду надо ввести перед push, и тогда логин-пароль будет запрошен единожды.
Все, теперь можно убедиться, что по адресу https://github.com/javakitt/example лежат отправленные файлы.
Теперь любой человек может клонировать репозиторий по кнопке Clone, вносить изменения и отправлять их на GitHub (если мы ему дадим права).
Отправка на GitHub из командной строки
Теперь у вас есть собственный репозиторий GitHub, пора загружать в него файлы.
Какой бы метод вы ни использовали для его создания, после того, как он будет связан с вашим локальным компьютером, вам нужно будет сделать ещё несколько шагов. Следующие шаги предполагают, что вы выполнили всё до этого момента и использовали GitHub CLI для аутентификации вашей системы с помощью вашей учетной записи.
Первое, что вам нужно сделать, это сказать Git, кто вы. Вы не можете ничего зафиксировать на GitHub, не сделав этого заранее. Откройте терминал и введите эти две команды.
git config —global user.name «YourUserName»
git config —global user.email «YourEmailAddress»
Теперь, каждый раз, когда вы что-то фиксируете на GitHub со своего ПК, эта информация будет прикрепляться. В некоторых случаях, таких как личные репозитории, это не так важно, но система построена для обслуживания крупных организаций.
Теперь мы готовы отправить содержимое нашего локального репозитория Git на GitHub.
- Войдите git add . в терминале. Поскольку это первый запуск, мы предполагаем, что вы хотите отправить все файлы. Для отдельных файлов замените точку на имя файла.
- Подтвердите, что файлы доставлены через git status .
- Теперь вам нужно зафиксировать промежуточные файлы с помощью git commit -m «Insert a message here» . Сообщение является обязательным, но для первого раза достаточно «First commit».
- Чтобы начать, введите git push —set-upstream origin master и нажмите ввод.
Продолжительность отправки зависит от размера каталога, но как только это будет сделано, вы получите подтверждение и вернётесь обратно в пустое приглашение. Вы можете использовать git status в любое время, чтобы проверить, есть ли подготовленные файлы для фиксации. Также стоит отметить, что шаг 4 необходим только при первой фиксации. В будущем вы можете просто использовать git push для отправки всех зафиксированных файлов в репозиторий GitHub.
Это может показаться сложным, но как только вы настроите использование GitHub и потратите немного времени на его использование как в Интернете, так и на локальном компьютере, всё это довольно быстро стать вашей второй натурой.
Работа с репозиторием
Теперь на сайте github.com создадим новый репозиторий, если это новый проект.
Теперь перейдём в папку с проектом на локальной машине и дадим команду:
Покажу на примере Windows.
Когда вы создаете репозиторий на GitHub, он существует как удаленный репозиторий. Вы можете клонировать свой репозиторий, чтобы создать локальную копию на вашем компьютере и синхронизировать между этими двумя местоположениями.
В этой процедуре предполагается, что вы уже создали хранилище на GitHub или имеете существующее хранилище, принадлежащее кому-то, кому вы хотели бы внести свой вклад.
Клонирование репозитория с помощью командной строки
На GitHub перейдите на главную страницу репозитория.
Примечание. Если хранилище пустое, вы можете вручную скопировать URL-адрес страницы хранилища из браузера и перейти к шагу 4.
Под именем хранилища нажмите Клонировать или загрузить .
Чтобы клонировать репозиторий с использованием HTTPS, в разделе «Клонировать с HTTPS» нажмите . Чтобы клонировать репозиторий с использованием ключа SSH, включая сертификат, выданный центром сертификации SSH вашей организации, нажмите « Использовать SSH» , затем нажмите .
Откройте Git Bash. TerminalTerminal
Измените текущий рабочий каталог на место, где вы хотите сделать клонированный каталог.