Урок 7 из 8 · 25 мин · обновлено

GitHub: отправляем проект в облако

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

Зачем нужен удалённый репозиторий

Пока история хранится только на вашем компьютере. Сломается диск — пропадёт и проект. А коллеги вообще не видят вашу работу.

Удалённый репозиторий — копия проекта на сервере, например на GitHub. Он служит резервной копией, местом встречи команды и витриной ваших работ.

Создаём репозиторий на GitHub

  1. Зарегистрируйтесь на github.com.
  2. Нажмите New repository, придумайте имя, например my-site.
  3. Галочки «Add README» и другие пока не ставьте: у вас уже есть локальный репозиторий с историей.
  4. Нажмите Create repository — GitHub покажет адрес вида https://github.com/anna/my-site.git.

Связываем и отправляем

В папке проекта выполните:

Терминал
git remote add origin https://github.com/anna/my-site.git
git push -u origin main
  • git remote add origin адрес — запомнить удалённый репозиторий под именем origin (так его принято называть);
  • git push -u origin main — отправить ветку main. Флаг -u связывает локальную ветку с удалённой, поэтому дальше достаточно просто git push.

При первой отправке GitHub попросит войти. В Git для Windows откроется окно входа через браузер. На Mac и Linux вместо пароля понадобится токен доступа — его создают в настройках GitHub, в разделе Developer settings. Обычный пароль от аккаунта для команд Git не подойдёт.

Обновите страницу репозитория в браузере — там ваши файлы и вся история коммитов.

Повседневный цикл

Терминал
git add .
git commit -m "Добавил раздел доставки"
git push

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

Скачать и обновить

Чтобы получить чужой проект или свой на другом компьютере:

Терминал
git clone https://github.com/anna/my-site.git

Появится папка my-site с файлами и всей историей, уже связанная с GitHub.

Если коллеги отправили новые коммиты, заберите их:

Терминал
git pull

Привычка: делайте git pull перед началом работы. Так вы начнёте со свежей версии, и конфликтов будет меньше.

Что не должно попасть в репозиторий

Не всё в папке проекта стоит хранить в Git:

  • секреты — пароли, ключи API, токены: обычно они лежат в файле .env;
  • зависимости — например, папка node_modules весит сотни мегабайт и восстанавливается одной командой;
  • служебные файлы — .DS_Store на Mac, настройки редактора, логи.

Их перечисляют в файле .gitignore в корне проекта:

.gitignore
# секреты
.env

# зависимости
node_modules/

# служебные файлы
.DS_Store
*.log

*.log означает «все файлы с расширением .log», а слеш в конце — папку. Git перестанет предлагать эти файлы к коммиту.

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

README — лицо проекта

Файл README.md в корне GitHub показывает на главной странице репозитория. В нём коротко пишут: что это за проект, как его запустить, что использовалось. Формат — Markdown: решётка делает заголовок, звёздочки — жирный текст.

Markdown
# Сайт пиццерии

Учебный проект: адаптивная страница на HTML и CSS.

Посмотреть: https://anna.github.io/my-site/

Попробуйте сами. Создайте репозиторий на GitHub и отправьте туда свой проект. Добавьте .gitignore, который исключает файл .env и все .log-файлы, и README.md с описанием проекта. Закоммитьте и отправьте оба файла.

Решение
Терминал
git remote add origin https://github.com/anna/my-site.git
git push -u origin main

# создали .gitignore и README.md
git add .gitignore README.md
git commit -m "Добавил .gitignore и описание проекта"
git push

Проверьте страницу репозитория: README отобразится под списком файлов, а .env, даже если он есть в папке, на GitHub не попадёт.

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Что делает git push?

  2. Как скачать чужой проект с GitHub вместе с историей?

  3. Что стоит записать в .gitignore?

  4. Вы случайно закоммитили и отправили на GitHub пароль от базы данных. Что делать в первую очередь?