28 KiB
Введение в GitHub
Этот урок охватывает основы GitHub — платформы для размещения и управления изменениями в вашем коде.
Скетчноут от Tomomi Imura
Викторина перед лекцией
Введение
В этом уроке мы рассмотрим:
- отслеживание работы на вашем компьютере
- совместную работу над проектами с другими
- как вносить вклад в проекты с открытым исходным кодом
Предварительные требования
Перед началом убедитесь, что Git установлен. В терминале введите:
git --version
Если Git не установлен, скачайте Git. Затем настройте локальный профиль Git в терминале:
git config --global user.name "ваше-имя"
git config --global user.email "ваш-email"
Чтобы проверить, настроен ли уже Git, введите:
git config --list
Вам также понадобится аккаунт на GitHub, текстовый редактор (например, Visual Studio Code) и доступ к терминалу (или командной строке).
Перейдите на github.com, создайте аккаунт, если у вас его еще нет, или войдите и заполните свой профиль.
✅ GitHub — не единственное хранилище кода в мире; есть и другие, но GitHub — самое известное.
Подготовка
Вам понадобится папка с проектом на вашем локальном компьютере (ноутбуке или ПК) и публичное хранилище на GitHub, которое послужит примером того, как вносить вклад в проекты других.
Управление кодом
Предположим, у вас есть локальная папка с проектом, и вы хотите начать отслеживать свой прогресс с помощью git — системы контроля версий. Некоторые сравнивают использование git с написанием любовного письма самому себе в будущем. Читая свои сообщения о коммитах через дни, недели или месяцы, вы сможете вспомнить, почему приняли то или иное решение, или "откатить" изменения — при условии, что вы пишете хорошие сообщения о коммитах.
Задание: Создайте репозиторий и зафиксируйте код
Посмотрите видео
-
Создайте репозиторий на GitHub. На GitHub.com, в разделе репозиториев или в верхнем правом углу навигационной панели, найдите кнопку new repo.
- Дайте вашему репозиторию (папке) имя.
- Выберите create repository.
-
Перейдите в рабочую папку. В терминале переключитесь на папку (также известную как директория), которую вы хотите начать отслеживать. Введите:
cd [name of your folder]
-
Инициализируйте git-репозиторий. В вашем проекте введите:
git init
-
Проверьте статус. Чтобы проверить статус вашего репозитория, введите:
git status
Вывод может выглядеть примерно так:
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
сообщает вам, какие файлы готовы к сохранению в репозитории или содержат изменения, которые вы, возможно, захотите зафиксировать. -
Добавьте все файлы для отслеживания
Это также называется постановкой файлов в область подготовки.git add .
Аргумент
git add
плюс.
указывает, что все ваши файлы и изменения будут отслеживаться. -
Добавьте выбранные файлы для отслеживания
git add [file or folder name]
Это позволяет добавлять только выбранные файлы в область подготовки, если вы не хотите фиксировать все файлы сразу.
-
Уберите все файлы из области подготовки
git reset
Эта команда позволяет убрать все файлы из области подготовки сразу.
-
Уберите конкретный файл из области подготовки
git reset [file or folder name]
Эта команда позволяет убрать из области подготовки только конкретный файл, который вы не хотите включать в следующий коммит.
-
Сохраните свою работу. На этом этапе вы добавили файлы в так называемую область подготовки. Это место, где Git отслеживает ваши файлы. Чтобы сделать изменения постоянными, вам нужно зафиксировать файлы. Для этого создайте коммит с помощью команды
git commit
. Коммит представляет собой точку сохранения в истории вашего репозитория. Введите следующую команду, чтобы создать коммит:git commit -m "first commit"
Это зафиксирует все ваши файлы с сообщением "first commit". В будущем старайтесь давать более описательные сообщения, чтобы передать, какие изменения вы внесли.
-
Свяжите локальный репозиторий Git с GitHub. Репозиторий Git полезен на вашем компьютере, но в какой-то момент вы захотите создать резервную копию своих файлов где-то еще и пригласить других людей работать с вами над вашим репозиторием. Одно из лучших мест для этого — GitHub. Помните, что мы уже создали репозиторий на GitHub, поэтому нам нужно только связать локальный репозиторий Git с GitHub. Команда
git remote add
сделает это. Введите следующую команду:Примечание: перед вводом команды перейдите на страницу вашего репозитория на GitHub, чтобы найти URL репозитория. Вы будете использовать его в следующей команде. Замените
https://github.com/username/repository_name.git
на ваш URL GitHub.git remote add origin https://github.com/username/repository_name.git
Это создаст удаленный репозиторий с именем "origin", указывающий на репозиторий GitHub, который вы создали ранее.
-
Отправьте локальные файлы на GitHub. До сих пор вы создали связь между локальным репозиторием и репозиторием GitHub. Давайте отправим эти файлы на GitHub с помощью следующей команды
git push
:Примечание: имя вашей ветки по умолчанию может отличаться от
main
.git push -u origin main
Это отправит ваши коммиты из ветки "main" на GitHub.
-
Добавьте больше изменений. Если вы хотите продолжить вносить изменения и отправлять их на GitHub, вам нужно будет использовать следующие три команды:
git add . git commit -m "type your commit message here" git push
Совет: возможно, вы захотите использовать файл
.gitignore
, чтобы предотвратить появление на GitHub файлов, которые вы не хотите отслеживать, например, заметок, которые вы храните в той же папке, но которые не должны быть в публичном репозитории. Вы можете найти шаблоны для файлов.gitignore
на странице .gitignore templates.
Сообщения о коммитах
Отличная строка темы для коммита должна завершать следующее предложение:
Если применить, этот коммит <ваша строка темы здесь>.
Для темы используйте повелительное наклонение в настоящем времени: "изменить", а не "изменил" или "изменяет".
Как и в теме, в теле (опционально) также используйте повелительное наклонение в настоящем времени. Тело должно включать мотивацию для изменения и контрастировать это с предыдущим поведением. Вы объясняете почему
, а не как
.
✅ Потратьте несколько минут, чтобы просмотреть GitHub. Можете ли вы найти действительно отличное сообщение о коммите? А минимальное? Какую информацию, по вашему мнению, наиболее важно и полезно передать в сообщении о коммите?
Задание: Сотрудничество
Основная причина размещения проектов на GitHub — это возможность сотрудничать с другими разработчиками.
Работа над проектами с другими
Посмотрите видео
В вашем репозитории перейдите в Insights > Community
, чтобы увидеть, как ваш проект соответствует рекомендованным стандартам сообщества.
Вот несколько вещей, которые могут улучшить ваш репозиторий на GitHub:
- Описание. Добавили ли вы описание для вашего проекта?
- README. Добавили ли вы README? GitHub предоставляет рекомендации по написанию README.
- Руководство по вкладу. Есть ли у вашего проекта руководство по вкладу?
- Кодекс поведения. Есть ли Кодекс поведения?
- Лицензия. И, возможно, самое важное — лицензия?
Все эти ресурсы помогут новым участникам команды быстрее освоиться. Обычно это те вещи, на которые новые участники обращают внимание, прежде чем даже взглянуть на ваш код, чтобы понять, стоит ли им тратить свое время на ваш проект.
✅ Файлы README, хотя их подготовка занимает время, часто игнорируются занятыми мейнтейнерами. Можете ли вы найти пример особенно описательного README? Примечание: существуют инструменты для создания хороших README, которые вы можете попробовать.
Задание: Объедините код
Документы по вкладу помогают людям вносить изменения в проект. Они объясняют, какие типы вкладов вы ищете и как работает процесс. Участникам потребуется пройти несколько шагов, чтобы внести изменения в ваш репозиторий на GitHub:
- Форк вашего репозитория. Скорее всего, вы захотите, чтобы люди форкали ваш проект. Форк означает создание копии вашего репозитория в их профиле на GitHub.
- Клонирование. После этого они клонируют проект на свой локальный компьютер.
- Создание ветки. Вы захотите попросить их создать ветку для своей работы.
- Сосредоточение изменений на одной области. Попросите участников сосредоточить свои изменения на одной вещи за раз — так вероятность того, что вы сможете объединить их работу, будет выше. Представьте, что они исправляют баг, добавляют новую функцию и обновляют несколько тестов — что, если вы хотите или можете реализовать только 2 из 3 или 1 из 3 изменений?
✅ Представьте ситуацию, в которой ветки особенно важны для написания и выпуска качественного кода. Какие случаи использования вы можете придумать?
Примечание: будьте примером для подражания и создавайте ветки для своей работы. Любые коммиты, которые вы делаете, будут сделаны в ветке, в которой вы сейчас находитесь. Используйте
git status
, чтобы увидеть, в какой ветке вы находитесь.
Давайте рассмотрим рабочий процесс участника. Предположим, участник уже форкнул и клонировал репозиторий, так что у него есть готовый репозиторий Git на локальном компьютере:
-
Создайте ветку. Используйте команду
git branch
, чтобы создать ветку, которая будет содержать изменения, которые они хотят внести:git branch [branch-name]
-
Переключитесь на рабочую ветку. Переключитесь на указанную ветку и обновите рабочую директорию с помощью
git switch
:git switch [branch-name]
-
Работайте. На этом этапе вы можете вносить изменения. Не забудьте сообщить об этом Git с помощью следующих команд:
git add . git commit -m "my changes"
Убедитесь, что вы дали вашему коммиту хорошее имя, как для себя, так и для мейнтейнера репозитория, которому вы помогаете.
-
Объедините свою работу с веткой
main
. В какой-то момент вы завершите работу и захотите объединить свои изменения с веткойmain
. Веткаmain
могла измениться за это время, поэтому сначала обновите ее до последней версии с помощью следующих команд:git switch main git pull
На этом этапе убедитесь, что любые конфликты, ситуации, когда Git не может легко объединить изменения, происходят в вашей рабочей ветке. Поэтому выполните следующие команды:
git switch [branch_name] git merge main
Это принесет все изменения из
main
в вашу ветку, и, надеемся, вы сможете продолжить. Если нет, VS Code подскажет, где Git запутался, и вы просто измените затронутые файлы, чтобы указать, какое содержимое наиболее точное. -
Отправьте свою работу на GitHub. Отправка вашей работы на GitHub включает два действия: отправку вашей ветки в ваш репозиторий и открытие PR (Pull Request).
git push --set-upstream origin [branch-name]
Эта команда создаст ветку в вашем форкнутом репозитории.
-
Откройте PR. Затем вы захотите открыть PR. Для этого перейдите в форкнутый репозиторий на GitHub. Вы увидите уведомление, предлагающее создать новый PR. Нажмите на него, и вы попадете в интерфейс, где сможете изменить заголовок сообщения коммита, дать ему более подходящее описание. Теперь мейнтейнер репозитория, который вы форкнули, увидит этот PR, и, будем надеяться, оценит и объединит ваш PR. Теперь вы — участник, ура :)
-
Очистите. Считается хорошей практикой очищать после успешного объединения PR. Вы захотите удалить как локальную ветку, так и ветку, которую вы отправили на GitHub. Сначала удалите ее локально с помощью следующей команды:
git branch -d [branch-name]
Убедитесь, что вы перейдете на страницу GitHub для форкнутого репозитория и удалите удаленную ветку, которую вы только что запушили.
Pull request
кажется немного странным термином, потому что на самом деле вы хотите отправить свои изменения в проект. Но мейнтейнер (владелец проекта) или основная команда должны рассмотреть ваши изменения перед их слиянием с "главной" веткой проекта, так что вы, по сути, запрашиваете решение о внесении изменений у мейнтейнера.
Pull request — это место для сравнения и обсуждения различий, внесенных в ветку, с помощью обзоров, комментариев, интегрированных тестов и других инструментов. Хороший pull request следует примерно тем же правилам, что и сообщение коммита. Вы можете добавить ссылку на задачу в трекере задач, если ваша работа, например, исправляет проблему. Это делается с помощью символа #
, за которым следует номер вашей задачи. Например, #97
.
🤞Держим кулачки, чтобы все проверки прошли успешно, и владелец(ы) проекта слили ваши изменения в проект🤞
Обновите текущую локальную рабочую ветку всеми новыми коммитами из соответствующей удаленной ветки на GitHub:
git pull
Как внести вклад в open source
Для начала давайте найдем репозиторий (или репо) на GitHub, который вас интересует и в который вы хотели бы внести изменения. Вам нужно будет скопировать его содержимое на свой компьютер.
✅ Хороший способ найти репозитории для новичков — это поиск по тегу 'good-first-issue'.
Существует несколько способов копирования кода. Один из них — "клонировать" содержимое репозитория, используя HTTPS, SSH или GitHub CLI (интерфейс командной строки).
Откройте терминал и клонируйте репозиторий следующим образом:
git clone https://github.com/ProjectURL
Чтобы работать над проектом, перейдите в нужную папку:
cd ProjectURL
Вы также можете открыть весь проект, используя Codespaces, встроенный редактор кода / облачную среду разработки от GitHub, или GitHub Desktop.
Наконец, вы можете скачать код в виде архива.
Еще несколько интересных вещей о GitHub
Вы можете поставить звезду, подписаться на обновления или "форкнуть" любой публичный репозиторий на GitHub. Найти свои отмеченные звездами репозитории можно в выпадающем меню в правом верхнем углу. Это как закладки, но для кода.
У проектов есть трекер задач, чаще всего на GitHub во вкладке "Issues", если не указано иное, где люди обсуждают проблемы, связанные с проектом. А во вкладке Pull Requests обсуждаются и рецензируются изменения, которые находятся в процессе.
У проектов также могут быть обсуждения на форумах, в почтовых рассылках или в чатах, таких как Slack, Discord или IRC.
✅ Осмотритесь в вашем новом репозитории на GitHub и попробуйте сделать несколько вещей, например, изменить настройки, добавить информацию в репозиторий или создать проект (например, Канбан-доску). Возможностей много!
🚀 Задание
Работайте в паре с другом над кодом друг друга. Создайте проект совместно, форкните код, создайте ветки и объедините изменения.
Викторина после лекции
Обзор и самостоятельное изучение
Прочитайте больше о вкладе в open source программное обеспечение.
Практика, практика, практика. GitHub предлагает отличные учебные материалы на skills.github.com:
Вы также найдете более продвинутые курсы.
Задание
Пройдите курс Первая неделя на GitHub
Отказ от ответственности:
Этот документ был переведен с использованием сервиса автоматического перевода Co-op Translator. Хотя мы стремимся к точности, пожалуйста, учитывайте, что автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникающие в результате использования данного перевода.