Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.
Загляните в раздел «Обсуждение»:
На текущий момент у нас есть репозиторий с двумя коммитами. Содержимое директории hexlet-git выглядит так:
hexlet-git$ ls -a
.git
PEOPLE.md
README.md
Перед тем как продолжить экспериментировать, добавим наш репозиторий на github.com. Сохранённый репозиторий в любой момент можно извлечь и продолжить работу в нём с последнего добавленного туда коммита. Это полезно на случай, если мы случайно удалим или изменим локальный репозиторий так, что с ним станет невозможно работать.
Создайте репозиторий на Гитхабе. Назовите его hexlet-git. Важно, чтобы репозиторий создавался пустым, поэтому не отмечайте галочки, добавляющие файлы.
На странице репозитория вы увидите готовые команды для подключения созданного репозитория на Гитхабе к уже существующему репозиторию у вас на компьютере.
Выполните эти шаги:
# Подробнее эти команды мы разберём позже
hexlet-git$ git branch -M main
hexlet-git$ git remote add origin git@github.com:<ИМЯ НА ГИТХАБЕ>/hexlet-git.git
hexlet-git$ git push -u origin main
Обновите страницу с репозиторием на 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.
Разработчики не только отправляют изменения на Гитхаб, но и забирают изменения оттуда. Чаще всего это изменения, сделанные другими разработчиками проекта, но не обязательно. Бывает такое, что один разработчик работает над одним проектом с разных компьютеров, на каждом из которых своя собственная копия репозитория (git работает только так). В таком случае, перед началом работы нужно всегда выполнять команду git pull --rebase
, которая скачивает из внешнего репозитория новые коммиты и добавляет их в локальный репозиторий.
Обычно, в статьях пишут, что достаточно вызывать git pull, но это может приводить к созданию ненужных merge-коммитов, ухудшающих историю изменений. Правильная работа с git pull требует знания таких вещей как ветвление и git rebase. Они довольно сложны для новичков и рассматриваются позже, когда появится хоть какой-то опыт работы с git.
Подведём некоторый итог. Мы создали репозиторий с несколькими коммитами. Этот репозиторий добавлен на Гитхаб и может быть склонирован для дальнейшей разработки. Какую пользу из git мы можем извлечь к текущему моменту? У нас есть запасная копия (бекап) кода на сайте Github. Как минимум, не страшно потерять код. Теперь его легко восстановить при случае и поделиться с другими.
Отдельно стоит сказать, что Гитхаб это хоть и самая популярная, но не единственная площадка для хостинга репозиториев. Кроме него особенно известны Bitbucket и Gitlab. Последний можно даже поставить к себе на сервер и "хостить" репозитории внутри своей компании, что многие и делают по соображениям безопасности или экономии.
git push
Вам ответят команда поддержки Хекслета или другие студенты.
или войти в аккаунт
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт