Урок 7 из 8 · 25 мин · обновлено
GitHub: отправляем проект в облако
Как создать репозиторий на GitHub, связать его с локальным, отправить коммиты, скачать чужой проект и забрать свежие изменения. И что не должно попасть в репозиторий.
Зачем нужен удалённый репозиторий
Пока история хранится только на вашем компьютере. Сломается диск — пропадёт и проект. А коллеги вообще не видят вашу работу.
Удалённый репозиторий — копия проекта на сервере, например на GitHub. Он служит резервной копией, местом встречи команды и витриной ваших работ.
Создаём репозиторий на GitHub
- Зарегистрируйтесь на github.com.
- Нажмите New repository, придумайте имя, например
my-site. - Галочки «Add README» и другие пока не ставьте: у вас уже есть локальный репозиторий с историей.
- Нажмите 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 в корне проекта:
# секреты
.env
# зависимости
node_modules/
# служебные файлы
.DS_Store
*.log
*.log означает «все файлы с расширением .log», а слеш в конце — папку. Git перестанет предлагать эти файлы к коммиту.
Главное правило: пароли и ключи никогда не коммитят. Если секрет попал в историю, удалить его оттуда очень трудно, а публичные репозитории постоянно сканируют боты. Если такое случилось, первым делом смените пароль или ключ — считайте, что он уже утёк.
README — лицо проекта
Файл README.md в корне GitHub показывает на главной странице репозитория. В нём коротко пишут: что это за проект, как его запустить, что использовалось. Формат — 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 не попадёт.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Что делает git push?
push отправляет локальные коммиты на сервер. Забирать чужие изменения — задача git pull.
-
Как скачать чужой проект с GitHub вместе с историей?
git clone создаёт папку с проектом и всей историей коммитов, а заодно связывает её с удалённым репозиторием.
-
Что стоит записать в .gitignore?
В репозиторий не кладут секреты, автоматически генерируемые файлы и тяжёлые зависимости. Их перечисляют в .gitignore.
-
Вы случайно закоммитили и отправили на GitHub пароль от базы данных. Что делать в первую очередь?
Даже после удаления файла пароль остаётся в истории, а публичные репозитории сканируют боты. Скомпрометированный секрет нужно сразу заменить.