You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/ru/1-getting-started-lessons/2-github-basics/README.md

344 lines
29 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "ea65b75e488aa33a3cc5cb1c6c3f047a",
"translation_date": "2025-10-03T13:37:36+00:00",
"source_file": "1-getting-started-lessons/2-github-basics/README.md",
"language_code": "ru"
}
-->
# Введение в GitHub
Этот урок охватывает основы GitHub — платформы для размещения и управления изменениями в вашем коде.
![Введение в GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.ru.png)
> Скетчноут от [Tomomi Imura](https://twitter.com/girlie_mac)
## Тест перед лекцией
[Тест перед лекцией](https://ff-quizzes.netlify.app)
## Введение
В этом уроке мы рассмотрим:
- отслеживание работы на вашем компьютере
- совместную работу над проектами с другими
- как вносить вклад в проекты с открытым исходным кодом
### Предварительные требования
Перед началом убедитесь, что Git установлен. В терминале введите:
`git --version`
Если Git не установлен, [скачайте Git](https://git-scm.com/downloads). Затем настройте локальный профиль Git в терминале:
* `git config --global user.name "ваше-имя"`
* `git config --global user.email "ваш-email"`
Чтобы проверить, настроен ли Git, введите:
`git config --list`
Вам также понадобится аккаунт на GitHub, редактор кода (например, Visual Studio Code) и доступ к терминалу (или командной строке).
Перейдите на [github.com](https://github.com/), создайте аккаунт, если у вас его еще нет, или войдите в систему и заполните профиль.
✅ GitHub — не единственный репозиторий кода в мире; есть и другие, но GitHub — самый известный.
### Подготовка
Вам понадобится папка с проектом кода на вашем локальном компьютере (ноутбуке или ПК) и публичный репозиторий на GitHub, который будет служить примером того, как вносить вклад в проекты других.
---
## Управление кодом
Предположим, у вас есть локальная папка с проектом кода, и вы хотите начать отслеживать свой прогресс с помощью git — системы контроля версий. Некоторые сравнивают использование git с написанием любовного письма самому себе в будущем. Читая сообщения о коммитах через дни, недели или месяцы, вы сможете вспомнить, почему приняли то или иное решение, или "откатить" изменения — при условии, что вы пишете хорошие сообщения о коммитах.
### Задача: Создать репозиторий и зафиксировать код
> Посмотрите видео
>
> [![Видео о Git и GitHub](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4)
1. **Создайте репозиторий на GitHub**. На GitHub.com, в разделе репозиториев или в верхнем правом углу навигационной панели, найдите кнопку **new repo**.
1. Дайте вашему репозиторию (папке) имя.
1. Выберите **create repository**.
1. **Перейдите в рабочую папку**. В терминале переключитесь на папку (также известную как директория), которую вы хотите начать отслеживать. Введите:
```bash
cd [name of your folder]
```
1. **Инициализируйте репозиторий git**. В вашем проекте введите:
```bash
git init
```
1. **Проверьте статус**. Чтобы проверить статус репозитория, введите:
```bash
git status
```
вывод может выглядеть примерно так:
```output
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file.txt
modified: file2.txt
```
Обычно команда `git status` сообщает, какие файлы готовы к _сохранению_ в репозитории или содержат изменения, которые вы, возможно, захотите зафиксировать.
1. **Добавьте все файлы для отслеживания**
Это также называется подготовкой файлов/добавлением файлов в область подготовки.
```bash
git add .
```
Аргумент `git add` плюс `.` указывает, что все ваши файлы и изменения будут отслеживаться.
1. **Добавьте выбранные файлы для отслеживания**
```bash
git add [file or folder name]
```
Это позволяет добавлять только выбранные файлы в область подготовки, если вы не хотите фиксировать все файлы сразу.
1. **Отмените подготовку всех файлов**
```bash
git reset
```
Эта команда позволяет отменить подготовку всех файлов сразу.
1. **Отмените подготовку конкретного файла**
```bash
git reset [file or folder name]
```
Эта команда позволяет отменить подготовку только одного конкретного файла, который вы не хотите включать в следующий коммит.
1. **Сохраните свою работу**. На этом этапе вы добавили файлы в так называемую _область подготовки_. Это место, где Git отслеживает ваши файлы. Чтобы сделать изменения постоянными, вам нужно афиксировать_ файлы. Для этого создайте оммит_ с помощью команды `git commit`. Коммит представляет собой точку сохранения в истории вашего репозитория. Введите следующую команду, чтобы создать коммит:
```bash
git commit -m "first commit"
```
Это фиксирует все ваши файлы, добавляя сообщение "first commit". В будущем для сообщений о коммитах вы захотите быть более описательными, чтобы передать, какой тип изменений вы внесли.
1. **Свяжите локальный репозиторий Git с GitHub**. Репозиторий Git полезен на вашем компьютере, но в какой-то момент вы захотите создать резервную копию ваших файлов где-то еще и пригласить других людей работать с вами над вашим репозиторием. Одним из таких отличных мест является GitHub. Помните, мы уже создали репозиторий на GitHub, поэтому единственное, что нам нужно сделать, это связать наш локальный репозиторий Git с GitHub. Команда `git remote add` сделает это. Введите следующую команду:
> Примечание: перед вводом команды перейдите на страницу вашего репозитория GitHub, чтобы найти URL репозитория. Вы будете использовать его в команде ниже. Замените ```https://github.com/username/repository_name.git``` на ваш URL GitHub.
```bash
git remote add origin https://github.com/username/repository_name.git
```
Это создает _удаленное подключение_, названное "origin", указывающее на репозиторий GitHub, который вы создали ранее.
1. **Отправьте локальные файлы на GitHub**. До сих пор вы создали _подключение_ между локальным репозиторием и репозиторием GitHub. Давайте отправим эти файлы на GitHub с помощью следующей команды `git push`, как показано ниже:
> Примечание: имя вашей ветки по умолчанию может отличаться от ```main```.
```bash
git push -u origin main
```
Это отправляет ваши коммиты в ветке "main" на GitHub. Установка ветки `upstream`, включая `-u` в команде, устанавливает связь между вашей локальной веткой и удаленной веткой, так что вы можете просто использовать git push или git pull без указания имени ветки в будущем. Git автоматически будет использовать ветку upstream, и вам не нужно будет явно указывать имя ветки в будущих командах.
2. **Добавление новых изменений**. Если вы хотите продолжить внесение изменений и отправку их на GitHub, вам нужно будет использовать следующие три команды:
```bash
git add .
git commit -m "type your commit message here"
git push
```
> Совет: возможно, вы захотите использовать файл `.gitignore`, чтобы предотвратить отображение файлов, которые вы не хотите отслеживать, на GitHub — например, файл заметок, который вы храните в той же папке, но который не должен быть в публичном репозитории. Вы можете найти шаблоны для файлов `.gitignore` на [.gitignore templates](https://github.com/github/gitignore).
#### Сообщения о коммитах
Отличная строка темы коммита Git завершает следующее предложение:
Если применить, этот коммит <ваша строка темы здесь>
Для темы используйте повелительное наклонение в настоящем времени: "изменить", а не "изменено" или "изменяет".
Как и в теме, в теле (опционально) также используйте повелительное наклонение в настоящем времени. Тело должно включать мотивацию для изменения и контрастировать это с предыдущим поведением. Вы объясняете `почему`, а не `как`.
✅ Потратьте несколько минут, чтобы поискать на GitHub. Можете ли вы найти действительно отличное сообщение о коммите? А минимальное? Какую информацию, по вашему мнению, наиболее важно и полезно передать в сообщении о коммите?
### Задача: Сотрудничество
Основная причина размещения вещей на GitHub — это возможность сотрудничать с другими разработчиками.
## Работа над проектами с другими
> Посмотрите видео
>
> [![Видео о Git и GitHub](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8)
В вашем репозитории перейдите в `Insights > Community`, чтобы увидеть, как ваш проект соответствует рекомендованным стандартам сообщества.
Вот несколько вещей, которые могут улучшить ваш репозиторий на GitHub:
- **Описание**. Добавили ли вы описание для вашего проекта?
- **README**. Добавили ли вы README? GitHub предоставляет рекомендации по написанию [README](https://docs.github.com/articles/about-readmes/?WT.mc_id=academic-77807-sagibbon).
- **Руководство по внесению изменений**. Есть ли у вашего проекта [руководство по внесению изменений](https://docs.github.com/articles/setting-guidelines-for-repository-contributors/?WT.mc_id=academic-77807-sagibbon)?
- **Кодекс поведения**. [Кодекс поведения](https://docs.github.com/articles/adding-a-code-of-conduct-to-your-project/).
- **Лицензия**. Возможно, самое важное — [лицензия](https://docs.github.com/articles/adding-a-license-to-a-repository/).
Все эти ресурсы помогут новым участникам команды быстрее адаптироваться. Обычно именно такие вещи новые участники изучают перед тем, как взглянуть на ваш код, чтобы понять, подходит ли ваш проект для их времени и усилий.
✅ Файлы README, хотя их подготовка занимает время, часто игнорируются занятыми поддерживающими проект разработчиками. Можете ли вы найти пример особенно описательного README? Примечание: существуют [инструменты для создания хороших README](https://www.makeareadme.com/), которые вам могут понравиться.
### Задача: Объединение кода
Документы для внесения изменений помогают людям вносить вклад в проект. Они объясняют, какие типы вкладов вы ищете и как работает процесс. Участники должны пройти ряд шагов, чтобы иметь возможность внести вклад в ваш репозиторий на GitHub:
1. **Форк вашего репозитория**. Вы, вероятно, захотите, чтобы люди оркали_ ваш проект. Форк означает создание копии вашего репозитория в их профиле GitHub.
1. **Клонирование**. После этого они клонируют проект на свой локальный компьютер.
1. **Создание ветки**. Вы захотите попросить их создать етку_ для своей работы.
1. **Сосредоточение изменений на одной области**. Попросите участников сосредоточить свои изменения на одной вещи за раз — так вероятность того, что вы сможете _объединить_ их работу, будет выше. Представьте, что они исправляют баг, добавляют новую функцию и обновляют несколько тестов — что, если вы хотите или можете реализовать только 2 из 3 или 1 из 3 изменений?
✅ Представьте ситуацию, где ветки особенно важны для написания и выпуска хорошего кода. Какие случаи использования вы можете придумать?
> Примечание: будьте тем изменением, которое вы хотите видеть в мире, и создавайте ветки для своей работы. Любые коммиты, которые вы делаете, будут сделаны в ветке, в которой вы сейчас "находитесь". Используйте `git status`, чтобы увидеть, в какой ветке вы находитесь.
Давайте рассмотрим рабочий процесс участника. Предположим, участник уже оркал_ и _клонировал_ репозиторий, так что у него есть готовый репозиторий Git на локальном компьютере:
1. **Создайте ветку**. Используйте команду `git branch`, чтобы создать ветку, которая будет содержать изменения, которые они планируют внести:
```bash
git branch [branch-name]
```
1. **Переключитесь на рабочую ветку**. Переключитесь на указанную ветку и обновите рабочую директорию с помощью команды `git switch`:
```bash
git switch [branch-name]
```
1. **Работайте**. На этом этапе вы хотите внести свои изменения. Не забудьте сообщить об этом Git с помощью следующих команд:
```bash
git add .
git commit -m "my changes"
```
Убедитесь, что вы дали вашему коммиту хорошее имя — для вашего удобства, а также для удобства поддерживающего репозиторий, которому вы помогаете.
1. **Объедините вашу работу с веткой `main`**. В какой-то момент вы завершите работу и захотите объединить ее с веткой `main`. Ветка `main` могла измениться за это время, поэтому сначала убедитесь, что вы обновили ее до последней версии с помощью следующих команд:
```bash
git switch main
git pull
```
На этом этапе вы хотите убедиться, что любые онфликты_, ситуации, где Git не может легко _объединить_ изменения, происходят в вашей рабочей ветке. Поэтому выполните следующие команды:
```bash
git switch [branch_name]
git merge main
```
Команда `git merge main` объединит все изменения из `main` в вашу ветку. Надеемся, вы сможете просто продолжить. Если нет, VS Code покажет вам, где Git апутался_, и вы просто измените затронутые файлы, чтобы указать, какой контент наиболее точен.
Чтобы переключиться на другую ветку, используйте современную команду `git switch`:
```bash
git switch [branch_name]
1. **Отправьте вашу работу на GitHub**. Отправка вашей работы на GitHub означает две вещи: отправку вашей ветки в ваш репозиторий и открытие PR (Pull Request).
```bash
git push --set-upstream origin [branch-name]
```
Команда выше создает ветку в вашем форкнутом репозитории.
1. **Открыть PR**. Далее вам нужно открыть PR. Для этого перейдите в форкнутый репозиторий на GitHub. На GitHub будет указано, хотите ли вы создать новый PR. Нажмите на это, и вы попадете в интерфейс, где можно изменить заголовок сообщения коммита и добавить более подходящее описание. Теперь владелец репозитория, который вы форкнули, увидит ваш PR и, ержим кулачки_, оценит его и _объединит_ ваш PR. Поздравляем, теперь вы — участник проекта, ура! :)
1. **Очистка**. Считается хорошей практикой _очистить_ после успешного объединения PR. Вам нужно очистить как локальную ветку, так и ветку, которую вы отправили на GitHub. Сначала удалим ее локально с помощью следующей команды:
```bash
git branch -d [branch-name]
```
Убедитесь, что вы перешли на страницу форкнутого репозитория на GitHub и удалили удаленную ветку, которую только что отправили.
`Pull request` может показаться странным термином, ведь на самом деле вы хотите отправить свои изменения в проект. Но владелец проекта или основная команда должны рассмотреть ваши изменения перед их объединением с "основной" веткой проекта, так что вы фактически запрашиваете решение о внесении изменений у владельца.
Pull request — это место, где можно сравнить и обсудить различия, внесенные в ветку, с помощью обзоров, комментариев, интегрированных тестов и других инструментов. Хороший pull request следует примерно тем же правилам, что и сообщение коммита. Вы можете добавить ссылку на задачу в трекере задач, если ваша работа, например, решает проблему. Это делается с помощью `#`, за которым следует номер вашей задачи. Например, `#97`.
🤞Держим кулачки, чтобы все проверки прошли успешно и владелец(ы) проекта объединили ваши изменения в проект🤞
Обновите текущую локальную рабочую ветку, добавив все новые коммиты из соответствующей удаленной ветки на GitHub:
`git pull`
## Как внести вклад в open source
Сначала найдите репозиторий (или **repo**) на GitHub, который вас интересует и в который вы хотели бы внести изменения. Вам нужно скопировать его содержимое на свой компьютер.
✅ Хороший способ найти репозитории, подходящие для новичков, — [искать по тегу 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/).
![Скопировать репозиторий локально](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.ru.png)
Есть несколько способов скопировать код. Один из них — "клонировать" содержимое репозитория, используя HTTPS, SSH или GitHub CLI (Command Line Interface).
Откройте терминал и клонируйте репозиторий следующим образом:
`git clone https://github.com/ProjectURL`
Чтобы работать над проектом, перейдите в нужную папку:
`cd ProjectURL`
Вы также можете открыть весь проект, используя [Codespaces](https://github.com/features/codespaces), встроенный редактор кода / облачную среду разработки GitHub, или [GitHub Desktop](https://desktop.github.com/).
Наконец, вы можете скачать код в виде архива.
### Несколько интересных фактов о GitHub
Вы можете поставить звезду, подписаться на обновления или "форкнуть" любой публичный репозиторий на GitHub. Вы найдете свои отмеченные звездами репозитории в выпадающем меню в правом верхнем углу. Это как закладки, но для кода.
У проектов есть трекер задач, обычно на GitHub во вкладке "Issues", если не указано иначе, где люди обсуждают проблемы, связанные с проектом. А вкладка Pull Requests — это место, где обсуждаются и рассматриваются изменения, которые находятся в процессе.
У проектов также могут быть обсуждения на форумах, в списках рассылки или в чатах, таких как Slack, Discord или IRC.
✅ Ознакомьтесь с вашим новым репозиторием на GitHub и попробуйте сделать несколько вещей, например, изменить настройки, добавить информацию в репозиторий или создать проект (например, доску Kanban). Возможностей много!
---
## 🚀 Задание
Работайте в паре с другом над кодом друг друга. Создайте проект совместно, форкните код, создайте ветки и объедините изменения.
## Викторина после лекции
[Викторина после лекции](https://ff-quizzes.netlify.app/web/en/)
## Обзор и самостоятельное изучение
Прочитайте больше о [внесении вклада в open source](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution).
[Шпаргалка по Git](https://training.github.com/downloads/github-git-cheat-sheet/).
Практикуйтесь, практикуйтесь, практикуйтесь. GitHub предлагает отличные учебные курсы на [skills.github.com](https://skills.github.com):
- [Первая неделя на GitHub](https://skills.github.com/#first-week-on-github)
Там также есть более продвинутые курсы.
## Задание
Пройдите курс [Первая неделя на GitHub](https://skills.github.com/#first-week-on-github)
---
**Отказ от ответственности**:
Этот документ был переведен с помощью сервиса автоматического перевода [Co-op Translator](https://github.com/Azure/co-op-translator). Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.