Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Интеграция с Github

На текущий момент у нас есть репозиторий с двумя коммитами. Содержимое директории hexlet-git выглядит так:

hexlet-git$ ls -a
.git
PEOPLE.md
README.md

Перед тем как продолжить экспериментировать, добавим наш репозиторий на github.com. Сохранённый репозиторий в любой момент можно извлечь и продолжить работу в нём с последнего добавленного туда коммита. Это полезно на случай если мы случайно удалим или изменим локальный репозиторий так, что с ним станет невозможно работать.

  1. Создайте репозиторий на Гитхабе. Назовите его hexlet-git. Важно, чтобы репозиторий создавался пустым, поэтому не отмечайте галочки, добавляющие файлы.

  2. На странице репозитория вы увидите готовые команды для подключения созданного репозитория на Гитхабе к уже существующему репозиторию у вас на компьютере. Выполните эти шаги:

    # Подробнее эти команды мы разберём позже
    hexlet-git$ git remote add origin git@github.com:<ИМЯ НА ГИТХАБЕ>/hexlet-git.git
    hexlet-git$ git push -u origin master
    
  3. Обновите страницу с репозиторием на github.com. Изучите её интерфейс и содержимое репозитория. Обратите внимание на то, что директория .git отсутствует. Почему это так, мы узнаем в одном из следующих уроков.

После этой команды репозиторий, созданный на github.com, «соединяется» с локальным репозиторием hexlet-git. В данном месте может возникнуть вопрос. Почему соединяется? Разве это не один и тот же репозиторий?

В действительности это разные репозитории. Git относится к так называемым распределённым системам контроля версий. У git нет какого-то центрального места, где бы лежал один главный репозиторий, а разработчики работали с ним со своих компьютеров. В git у каждого разработчика и даже на Github находится свой собственный полноценный репозиторий. Эти репозитории git связывает между собой общей историей и возможностью обмениваться изменениями. В примере выше именно команда git push отправляет изменения во вновь созданный репозиторий.

Прямо сейчас, после выполнения команд выше, локальный и удалённый репозиторий идентичны. Но в процессе работы они всё время расходятся, и программисты должны не забывать синхронизировать изменения: заливать в репозиторий новые коммиты и забирать оттуда коммиты, сделанные другими разработчиками.

Теперь не важно, какие изменения делаются в локальном репозитории, на Github все коммиты попадут только после команды git push. Не забывайте делать её, бывает такое, что разработчик случайно удаляет локальный репозиторий, забыв запушить (от слова push) изменения.

Далее мы попробуем скачать репозиторий с Гитхаба так, как будто у нас нет локальной копии. Для этого удалите директорию проекта hexlet-git с вашего компьютера.

Клонирование

Репозиторий, созданный на Github, — публичный. Любой человек может клонировать его к себе на компьютер и начать работать с ним так, как будто это его личный репозиторий. Единственное ограничение — он не сможет запушить изменения, так как Github не даёт напрямую менять чужие репозитории.

Клонирование — базовая операция при работе с удалёнными репозиториями. Проекты, над которыми работают программисты, всегда находятся в системах подобных Github. Для работы с ними нужно клонировать репозиторий к себе на компьютер. Делается это с помощью команды git clone. Полную команду для клонирования можно получить на странице репозитория. Для этого нажмите большую зелёную кнопку Code и скопируйте содержимое.

$ git clone git@github.com:<ИМЯ НА ГИТХАБЕ>/hexlet-git.git
$ cd hexlet-git
$ ls -la

# Если эта операция проходит первый раз
# То вероятно вы увидите такое подобное сообщение
The authenticity of host github.com cannot be established. RSA key fingerprint is SHA256: хххххххххх Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added github.com (RSA) to the list of known hosts.
# Наберите yes и нажмите Enter

Мы получили точную копию репозитория, который был у нас до удаления директории hexlet-git.

Получение изменений с Github

Разработчики не только отправляют изменения на Гитхаб, но и забирают изменения оттуда. Чаще всего это изменения, сделанные другими разработчиками проекта, но не обязательно. Бывает такое, что один разработчик работает над одним проектом с разных компьютеров, на каждом из которых своя собственная копия репозитория (git работает только так). В таком случае, перед началом работы нужно всегда выполнять команду git pull --rebase, которая скачивает из внешнего репозитория новые коммиты и добавляет их в локальный репозиторий.

Обычно, в статьях пишут, что достаточно вызывать git pull, но это может приводить к созданию ненужных merge-коммитов ухудшающих историю изменений. Правильная работа с git pull требует знания таких вещей как ветвление и git rebase. Они довольно сложны для новичков и рассматриваются позже, когда появится хоть какой-то опыт работы с git.

Итого

Подведём некоторый итог. Мы создали репозиторий с несколькими коммитами. Этот репозиторий добавлен на Гитхаб и может быть склонирован для дальнейшей разработки. Какую пользу из git мы можем извлечь к текущему моменту? У нас есть запасная копия (бекап) кода на сайте Github. Как минимум, не страшно потерять код. Теперь его легко восстановить при случае и поделиться с другими.

Отдельно стоит сказать, что Гитхаб это хоть и самая популярная, но не единственная площадка для хостинга репозиториев. Кроме него особенно известны Bitbucket и Gitlab. Последний можно даже поставить к себе на сервер и "хостить" репозитории внутри своей компании, что многие и делают по соображениям безопасности или экономии.

Самостоятельная работа

  1. Выполните все шаги из урока
  2. Добавьте новый файл NEW.md с произвольным содержимым в репозиторий (нужно выполнить коммит)
  3. Залейте изменения на Github с помощью git push
  4. Обновите страницу репозитория на Github. Там должен появиться последний коммит, то есть те изменения, которые были им совершены

Дополнительные материалы

  1. Цикл git-разработки (init, commit, push on Github)
  2. GitHub - Настройка и конфигурация учетной записи

<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».