Github краткое руководство

Skip to main content

Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Документация по GitHub

Поиск в документации GitHub

All products

Начало работы

Краткое руководство

Начните работу с GitHub для управления репозиториями Git и совместной работы с другими пользователями.

    • Hello World

    • Настройка Git

    • Создание репозитория

    • Ветвление репозитория

    • GitHub Flow

    • Участие в проектах

    • Налаживание социальных связей

    • Взаимодействие с GitHub

    • Глоссарий GitHub

    • Памятка по GIT

    • Обучающие ресурсы по Git и GitHub

Следуйте инструкциям в этом упражнении Hello World, чтобы приступить к работе с GitHub.

Введение

GitHub — это платформа размещения кода для управления версиями и совместной работы. Она позволяет вам и другим пользователям работать над проектами вместе из любого места.

В этом руководстве вы ознакомитесь с основными понятиями GitHub, такими как репозитории, ветви, фиксации и запросы на вытягивание. Вы создадите собственный репозиторий Hello World и ознакомитесь с рабочим процессом запроса на вытягивание в GitHub — популярного способа создания и проверки кода.

В этом кратком руководстве вы выполните следующие действия:

  • создадите и используете репозиторий;
  • создадите ветвь и будете управлять ею;
  • внесете изменения в файл и отправите их в GitHub как фиксации;
  • откроете запрос на вытягивание и выполните его слияние.

Для работы с этим руководством вам потребуются учетная запись GitHub и доступ к Интернету. Вам не нужно знать, как писать код, использовать командную строку или устанавливать GIT (программное обеспечение для управления версиями, на котором основывается GitHub). Если у вас возникнет вопрос касательно любого из выражений, используемых в руководстве, перейдите к глоссарию, чтобы узнать больше о нашей терминологии.

Создание репозитория

Репозиторий обычно используется для упорядочения одного проекта. Репозитории могут содержать папки и файлы, изображения, видео, электронные таблицы и наборы данных — все, что нужно вашему проекту. Репозитории часто включают файл сведений о проекте. Файлы сведений создаются на языке Markdown в виде обычного текста. Эта памятка поможет вам приступить к работе с синтаксисом Markdown. GitHub позволяет добавить файл сведений одновременно с созданием репозитория. GitHub также предлагает другие распространенные компоненты, такие как файл лицензии, но пока вам выбирать их не нужно.

В репозитории hello-world можно хранить идеи и ресурсы, а также делиться ими и обсуждать их с другими пользователями.

  1. В правом верхнем углу любой страницы откройте раскрывающееся меню и выберите Новый репозиторий.

    Снимок экрана: раскрывающееся меню GitHub с параметрами для создания новых элементов. Пункт меню "Новый репозиторий" выделен темно-оранжевым цветом.

  2. В поле «Имя репозитория» введите hello-world.

  3. В поле «Описание» введите краткое описание.

  4. Выберите, будет ли репозиторий общедоступным или частным.

  5. Выберите параметр Добавить файл сведений.

  6. Щелкните Создать репозиторий.

Создание ветви

Ветвление позволяет одновременно иметь разные версии репозитория.

По умолчанию репозиторий имеет одну ветвь с именем main, которая считается главной. В репозитории можно создать дополнительные ветви на основе main. Ветви можно использовать для одновременного использования разных версий проекта. Это полезно, если нужно добавить в проект новые функции, не изменяя основной источник кода. Работа, выполняемая в других ветвях, не будет отражаться в главной ветви, пока вы не выполните ее слияние (этот процесс будет рассмотрен далее в руководстве). Ветви можно использовать для проведения экспериментов и внесения изменений перед их фиксацией в main.

Когда вы создаете ветвь на основе ветви main, создается копия или моментальный снимок main на этот момент времени. Если кто-то другой внес изменения в ветвь main, пока вы работали со своей ветвью, вы можете вытянуть эти изменения.

На этой схеме показано следующее:

  • ветвь main;
  • новая ветвь с именем feature;
  • путь, который проходит feature до слияния с main.

Схема ветвления

Приходилось ли вам сохранять разные версии файла? Например, так:

  • story.txt
  • story-edit.txt
  • story-edit-reviewed.txt

Ветви в репозиториях GitHub служат аналогичным целям.

На GitHub разработчики, авторы и дизайнеры используют ветви для хранения исправлений ошибок и результатов работы над функциями отдельно от ветви main (рабочей ветви). Когда изменение готово, производится слияние ветви с main.

Создание ветви

  1. В репозитории hello-world перейдите на вкладку Код.

  2. Над списком файлов щелкните раскрывающееся меню с надписью main.
    Снимок экрана: страница репозитория. Раскрывающееся меню со значком ветви и словом "main" выделено оранжевым контуром.

  3. В текстовом поле введите имя ветви readme-edits.

  4. Нажмите кнопку Создать ветвь readme-edits на основе main.

    Снимок экрана: раскрывающийся список ветви для репозитория. Сообщение Create branch: readme-edits from 'main'' выделено темно-оранжевым цветом.
    Теперь у вас две ветви: main и readme-edits. Сейчас они выглядят совершенно одинаково. Далее вы добавите изменения в новую ветвь.

Внесение и фиксация изменений

После создания ветви на предыдущем шаге в GitHub открылась страница кода для новой ветви readme-edits, которая является копией ветви main.

Вы можете вносить изменения в файлы в репозитории и сохранять их. В GitHub сохраненные изменения называются фиксациями. С каждой фиксацией связано сообщение о фиксации, в котором объясняется, почему было внесено данное изменение. В сообщениях о фиксациях ведется история изменений, чтобы другие участники могли понять, что вы сделали и почему.

  1. В созданной ветви readme-edits щелкните файл README.md.

  2. Чтобы изменить файл, щелкните .

  3. В редакторе напишите немного о себе. Попробуйте использовать различные элементы Markdown.

  4. Щелкните Зафиксировать изменения….

  5. В поле «Предложить изменения» напишите сообщение о фиксации, описывающее изменения.

  6. Щелкните Предложить изменения.

Эти изменения будут внесены только в файл сведений в вашей ветви readme-edits, поэтому теперь ее содержимое отличается от main.

Открытие запроса на вытягивание

Теперь, когда у вас есть изменения в ветви, созданной на основе main, можно открыть запрос на вытягивание.

Запросы на вытягивание — это основа совместной работы на GitHub. Когда вы открываете запрос на вытягивание, вы предлагаете свои изменения и просите, чтобы кто-нибудь проверил результаты вашей работы, извлек их и выполнил слияние со своей ветвью. В запросах на вытягивание показаны различия в содержимом двух ветвей. Изменения, дополнения и исключения отображаются разными цветами.

Сразу после фиксации вы можете открыть запрос на вытягивание и начать обсуждение, даже если код еще не завершен.

Используя функцию GitHub @mention в сообщении с запросом на вытягивание, вы можете запросить отзывы от конкретных пользователей или команд независимо от того, где они находятся физически — этажом ниже или на другом конце света.

Вы даже можете открывать запросы на вытягивание в собственном репозитории и выполнять их слияние самостоятельно. Это отличный способ ознакомиться с процессом работы на GitHub перед работой над крупными проектами.

  1. В репозитории hello-world перейдите на вкладку Запросы на вытягивание.

  2. Щелкните Новый запрос на вытягивание.

  3. В поле Примеры сравнения выберите созданную вами ветвь readme-edits, чтобы сравнить ее с main (исходной ветвью).

  4. Просмотрите различия на странице сравнения и убедитесь в том, что они готовы к отправке.

    Снимок экрана: diff для файла README.md. 3 красные линии перечисляют удаляемый текст, а 3 зеленые линии — добавляемый текст.

  5. Щелкните Создать запрос на вытягивание.

  6. Укажите заголовок запроса на вытягивание и напишите краткое описание изменений. Вы можете добавлять эмодзи и перетаскивать изображения и GIF-файлы.

  7. При необходимости справа от названия и описания щелкните рядом с элементом Рецензенты, Уполномоченные, Метки, Проекты или Веха, чтобы добавить любые из этих элементов в запрос на вытягивание. Пока их добавлять не нужно, но эти параметры обеспечивают различные способы совместной работы с помощью запросов на вытягивание. Дополнительные сведения см. в разделе Сведения о запросах на вытягивание.

  8. Щелкните Создать запрос на вытягивание.

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

Слияние запроса на вытягивание

На этом последнем шаге вы выполните слияние ветви readme-edits с ветвью main. После слияния запроса на вытягивание изменения в вашей ветви readme-edits будут включены в main.

Иногда запрос на вытягивание может вносить изменения в код, конфликтующие с существующим кодом в main. Если есть конфликты, GitHub оповещает вас об этом и блокирует слияние до их устранения. Вы можете выполнить фиксацию, которая устраняет конфликты, или использовать комментарии в запросе на вытягивание, чтобы обсудить конфликты с участниками команды.

При выполнении этого пошагового руководства конфликтов не должно быть, поэтому ваша ветвь готова к слиянию с главной.

  1. В нижней части запроса на вытягивание щелкните Объединить запрос на вытягивание , чтобы объединить изменения в main.
  2. Щелкните Подтвердить слияние. Вы получите сообщение о том, что запрос был успешно объединен и закрыт.
  3. Щелкните Удалить ветвь. Теперь, когда запрос на вытягивание объединен и изменения включены в main, вы можете спокойно удалить ветвь readme-edits. Чтобы внести дополнительные изменения в проект, вы всегда можете создать новую ветвь и повторить этот процесс.

Дальнейшие действия

В этом руководстве вы узнали, как создать проект и отправить запрос на вытягивание на GitHub.

Вы выполнили следующие задачи:

  • создали репозиторий с открытым кодом;
  • создали ветвь и управляли ею;
  • изменили файл и зафиксировали изменения в GitHub;
  • открыли запрос на вытягивание и выполнили его слияние.

Откройте свой профиль GitHub, и вы увидите, что на графике участия отразились результаты вашей работы.

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

Из этой статьи вы узнаете

  • Зачем нужны системы контроля версий

  • Откуда взялся Git

  • Как создать свой репозиторий на GitHub и внести в него изменения

  • Что такое fork, branch и другие интересные слова из мира Git

  • Как создать свой Pull Request

Вступление

Бывает, что начинающие разработчики проблематично осваивают Git и не с первого захода понимают логику работы сервиса. Но стоит создать пару репозиториев или, ещё лучше, погрузиться в реальную историю по установке стартапа на рельсы DevOps, как работа с ветками станет дружелюбной, а PR и MR больше не вызовут путаницы. Ошибки в любом случае появятся, но вы будете к ним готовы!

Начало

Когда вы пишете первую программу, всё кажется таким лаконичным, простым и понятным. Но по мере развития ваша программа обрастает новой функциональностью, становится сложнее и больше. Потом и вовсе появляются первые баги. И было бы здорово помнить или иметь возможность смотреть историю изменений, что добавили или убрали в коде, по какой причине мог появиться баг.

Первое и самое просто решение — «А давайте перед каждым изменением сохранять копию программы (просто копировать папку с кодом)?»

На самом деле это будет работать, но до поры до времени. Проект продолжит расти и станет полезным не только вам, но и вашим друзьям, которые захотят добавить в код что-то своё. В рядах программистов прибывает, и надо как-то договариваться, кто какой кусочек кода трогает, а потом ещё синхронизировать изменения, чтобы все фичи добрались до прода.

Настал звёздный час для систем контроля версий, которые запоминают, какое изменение и в каком файле было сделано, а также могут показать историю этих изменений.

Про Git

Существует несколько систем контроля версий: Git, Subversion, Team Foundation Server, Mercurial. Сегодня познакомимся с Git — самой популярной из них, по скромному признанию более 90% разработчиков.

Git появился 7 апреля 2005 года и был создан для управления разработкой ядра Linux. Кстати, создал его тот самый Линус Торвальдс, а сегодня его развитием и поддержкой занимается Дзюн Хамано.

Git — это распределённая система управления версиями: есть один сервер, через который разработчики обмениваются кодом. Разработчик копирует (клонирует) проект к себе на локальную машину, делает изменения и сохраняет их на удалённый сервер. При необходимости другие разработчики могут скопировать эти изменения к себе.

История и копия проекта хранятся локально и чаще всего не нужна дополнительная информация с других клиентов. Вы можете работать с репозиторием и при отсутствии интернета (например, в самолёте), а когда он появится, просто загрузить изменения в удалённый репозиторий на выделенном сервере.

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

GitHub — крупнейший веб-сервис, который позволяет заниматься совместной разработкой с использованием Git и сохранять изменения на своих серверах. На самом деле функциональность GitHub намного больше, но сейчас нас интересует только совместная разработка и история изменений. Ещё есть Gitlab, Bitbucket и другие, но мы будем использовать GitHub как самый популярный в настоящее время.

Предварительная настройка

Займёмся предполётной подготовкой.

Для начала зарегистрируйтесь на GitHub: задайте логин, почту и придумайте пароль. После «Создать аккаунт» не забудьте проверить почту и подтвердить её (опрос от Github после подтверждения почты можно пропустить).

Если всё ок, экран GitHub будет выглядеть вот так

Если всё ок, экран GitHub будет выглядеть вот так

В GitHub есть разграничение прав на работу с репозиториями. Можно задавать различные политики: сделать репозиторий публичным и приватным, ограничить права кругу пользователей или кому-то одному, например, разрешить просматривать репозиторий, но не изменять в нём данные.

Для того чтобы сервис определил, кто вы и имеете ли право работать с тем или иным репозиторием, нужно представиться — пройти процесс аутентификации.

GitHub поддерживает безопасность за счёт двух сетевых протоколов, HTTPS и SSH, и вся работа с сервисом происходит через один из них.

Работать с GitHub будем через терминал по SSH. Для этого один раз сгенерируем специальные ключи и добавим один из них в наш аккаунт на GitHub.

Можно работать и через HTTPS, но нужно будет каждый раз вводить пароль и специальный token.

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

При подключении используется пара ключей — открытый (публичный, public) и закрытый (приватный, private). Пользователь создаёт пару ключей при помощи специальной команды и сохраняет закрытый ключ у себя, а открытый кладёт на сервер (в нашем случае на GitHub). А работает это всё благодаря асимметричному шифрованию.

Алгоритм следующий: отправитель (GitHub) шифрует сообщение публичным ключом и передаёт сообщение клиенту (нам), а мы его расшифровываем при помощи приватного ключа, который предусмотрительно сохранили у себя. То, что зашифровано публичным ключом, расшифровать сможет только приватный ключ.

Давайте создадим пару ключей и добавим открытый ключ на GitHub.

Чтобы создать пару ключей, в терминале нужно ввести команду, задать путь для хранения ключей и указать пароль к ключу (необязательно).

Далее будем опираться на то, что путь для ключей дефолтный и пароль на ключи не установлен.

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

$ ssh-keygen
Generating public/private rsa key pair.
# путь до ключей, в скобках путь по умолчанию
Enter file in which to save the key (/Users/ifireice/.ssh/id_rsa):  
# пароль для ключей, при задании пароля в консоли не отображается ничего, даже звёздочки
# если нажать Enter, ничего не вводя, пароль будет пустым
Enter passphrase (empty for no passphrase):
# повторите пароль
Enter same passphrase again:
# после появится сообщение такого вида
Your identification has been saved in /Users/ifireice/.ssh/id_rsa
Your public key has been saved in /Users/ifireice/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Zu+HkZPC4ZP0veRmVjuKgylVvljHBNO8mHs+ieFFPvs ifireice@ifireice-osx
The key's randomart image is:
+---[RSA 3072]----+
|           o     |
|          o o    |
|           = .   |
|        o + +    |
|       +S* X     |
|       oB.@ X .  |
|       . O.# * . |
|      . +.*.% o  |
|       .  o*.+E. |
+----[SHA256]-----+

Бинго, ключи сгенерированы: в заданной директории появятся два файла, id_rsa и id_rsa.pub.

Теперь надо добавить публичный ключ в аккаунт на GitHub:

# выведите содержимое публичного ключа в консоль
$ cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDDJfHIi73sKd6cqm3RwKuY1zl46aAaE6X9Gp
/6zJiY3BiJj95oJjPdpfpPhVFWLIbmT8zFAtOLbX9N4C3b0enHUzgMacP/Kl4AbrAkhLqaua9iD
VNxxiTVxADG1M5525oc/eAvx7y0pXIb9ouWdYJSKa8/TUYFhWlCzV2quY9SA0FaMs7eY41+KWYpG.....
tA0oGxv+7WmXQmQzleLIRG13KQ+VAbL2vabdPcRoGuZavh0smOr/GtVSnLdspZ5RgONMSPWlF2I1YHMR
Q7CIKPs= ifireice@ifireice-osx
$

Скопируйте ключ от символов ssh-rsa и до конца файла и вставьте его в ваш аккаунт на GitHub.

Перейдите сюда: иконка пользователя (1) → Settings (2)

Перейдите сюда: иконка пользователя (1) → Settings (2)
→ SSH and GPG keys (3) → New SSH key (4)
→ SSH and GPG keys (3) → New SSH key (4)
→ в Title дайте имя ключу, чтобы понимать, откуда он (может, в будущем у вас появится несколько ключей) (5) → в Key вставляем скопированный из консоли ключ (6) → нажимаем кнопку «Add SSH key» (7)
→ в Title дайте имя ключу, чтобы понимать, откуда он (может, в будущем у вас появится несколько ключей) (5) → в Key вставляем скопированный из консоли ключ (6) → нажимаем кнопку «Add SSH key» (7)
После этого в ваших SSH-ключах появится новый ключ, и вы сможете работать с компьютера, где лежит приватный ключ с GitHub
После этого в ваших SSH-ключах появится новый ключ, и вы сможете работать с компьютера, где лежит приватный ключ с GitHub

Ну что, с настройкой GitHub пока закончили, осталось установить Git на компьютер. Сделать это можно по официальной инструкции (выберите пункт для вашей ОС).

Терминология

Самое время пополнить ваш Git-словарик, прежде чем создадим первый Pull Request.

Репозиторий (repository) — директория проекта, который отслеживается Git. В директории хранится проект, история изменений и мета-информация проекта (в скрытой директории .git).

Индекс — хранилка, где лежат имена файлов и их изменения, которые должны быть в следующем коммите. По факту индекс — просто файл. В индекс файлы сами не попадают, их нужно явно добавлять при помощи git add.

Коммит (commit) — это фиксация изменений в истории проекта (изменения, которые внесены в индекс). Коммит хранит изменённые файлы, имя автора коммита и время, в которое был сделан коммит. Кроме того, каждый коммит имеет уникальный идентификатор, который позволяет в любое время к нему откатиться. Можете считать коммит этакой точкой сохранения.

Ветка (branch) — последовательность коммитов. По сути — ссылка на последний коммит в этой ветке. Ветки не зависят друг от друга — можно вносить изменения в одну, и они не повлияют на другую (если вы явно этого не попросите). Работать вы начинаете в одной ветке — main, увидите чуть позже.

Форк (Fork) — собственное ответвление (fork) какого-то проекта. Это означает, что GitHub создаст вашу собственную копию проекта, данная копия будет находиться в вашем пространстве имён, и вы сможете легко делать изменения путём отправки (push) изменений.

Пул-реквест — pull request PR (пиар, он же merge request MR(мр)) — предложение изменения кода в чужом репозитории. Допустим, вы забрали к себе чужой репозиторий, поработали с ним и теперь хотите, чтобы ваши изменения попали в оригинальный репозиторий — тогда вы создаёте создаёте PR с просьбой добавить ваши изменения в репозиторий.

Начало работы

Начнём с простого — создадим свой репозиторий и сделаем наш первый коммит.

Открываем repositories (1) и создаём новый (2)

Открываем repositories (1) и создаём новый (2)
Задаём параметры репозитория
Задаём параметры репозитория

Зададим параметры:

  • (1) Repository name: имя репозитория.

  • (2) Description: описание репозитория.

  • (3) Тип репозитория: Public (публичный) или Private (приватный). Сейчас выберем публичный — кто угодно может видеть содержимое репозитория.

  • (4) Ставим галку на «Создать README файл». В этом файле в формате MarkDown описывают проект или прочую документацию. Именно содержимое этого файла можно увидеть, когда заходим на главную страницу репозитория. Примеры 1, 2, 3.

  • (5) Если известно, на каком языке будет проект, можем добавить шаблон .gitignore для этого языка. Сейчас у нас нет какого-то языка, поэтому не будем создавать .gitignore.

  • (6) Выбираем тип лицензии для нашего кода. В лицензии оговариваются права на проект. Стоит обратить внимание на BSD 3 или MIT, так как они предоставляют хороший баланс прав и ответственности.

(7) По умолчанию имя основной ветки в GitHub носит имя main, но до недавнего времени было master.

Получаем наш первый репозиторий

Получаем наш первый репозиторий

И нажимаем кнопку «Create repository». Успех, у нас есть первый репозиторий!

А что будет, если не добавим README и .gitignore?

На самом деле ничего страшного не произойдёт, но придётся выполнить ещё ряд шагов, чтобы проинициализировать git-репозиторий, прежде чем начать с ним работать.

Не переживайте, Git очень дружелюбный и сам расскажет, как это сделать.

Не переживайте, Git очень дружелюбный и сам расскажет, как это сделать.

Итак, мы создали репозиторий на удалённом сервере, теперь пора «забрать» его к себе на локальную машину и внести какие-то изменения.

Чтобы забрать репозиторий, его надо склонировать к себе при помощи команды git clone и пути до репозитория.

Для начала получим путь до репозитория.

Заходим в созданный репозиторий и находим кнопку «Code» (1) → нажимаем её → выбираем SSH (2) → и копируем строку (3)

Заходим в созданный репозиторий и находим кнопку «Code» (1) → нажимаем её → выбираем SSH (2) → и копируем строку (3)

Теперь идём в консоль, переходим в директорию, где хотим хранить проекты, и выполним (git@github.com:ifireiceya/MyFirstRepo.git — путь, который мы скопировали ранее):

$ git clone git@github.com:ifireiceya/MyFirstRepo.git
Cloning into 'MyFirstRepo'...
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 4 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (4/4), done.

Переходим в новый каталог, где теперь лежит копия нашего проекта с GitHub:

$ cd MyFirstRepo

Можем посмотреть, что уже есть в этой директории:

$ ls -a
.git      LICENSE   README.md

Видим два знакомых файла,LICENSE и README.md, а также одну скрытую директорию .git.

В .git хранится метаинформация и вся история для проекта. На каждый проект есть только одна директория .git, и лежит она в корне проекта.

$ ls .git
HEAD                 # указатель на вашу активную ветку
config               # персональные настройки для проекта
description          # описание проекта
hooks                # pre/post action hooks
index                # индексный файл
logs                 # история веток проекта (где они располагались)        
objects              # ваши объекты (коммиты, теги и тд)
packed-refs refs     # указатели на ваши ветки разработки

Давайте немного настроим Git под себя. Делать это нужно только один раз, потом настройки сохранятся, но при необходимости их можно изменить.

При установке Git была добавлена утилита git config, которая позволяет просматривать и изменять большинство параметров работы Git’а. Если речь о данных пользователя или способе работы репозитория — git config будет самым удобным способом настройки.

Настроим имя пользователя и адрес электронной почты. Эта информация важна, потому что включается в каждый коммит.

Поэтому в терминале переходим в Git-репозиторий, для которого задаём настройки, и выполняем:

$ git config user.name "Дарья Меленцова"
$ git config user.email ifireice@example.com


# Если добавить опцию --global, то эти настройки запишутся в настройки пользователя и будут действовать для всех проектов. 
# Мы выполняем эту команду без параметра --global, чтобы настройки касались только вашего проекта.

Чтобы настраивать ещё больше параметров с помощью git config, прочитайте эту документацию.

Вносим изменения

Теперь нужно внести изменения в проект. Но перед этим посмотрим две полезных команды:

  • git status — показывает текущее состояние файлов в репозитории (какие файлы изменились, удалились, добавились);

  • git log — показывает историю изменений (это про зафиксированные изменения, то есть коммиты).

Выполним эти команды и посмотрим, что они выведут для нашего репозитория.

Вбиваем git status:

$ git status                                  
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

И видим, что у нас нет изменений. Говорят, «нет коммитов в репозитории». Конечно, мы успели только клонировать репозиторий и ещё ничего не делали.

Идём дальше и пробуем git log, который покажет, что в проекте был только один Initial commit — когда мы создавали репозиторий с README.md:

$ git log
commit 9ae1cbcc77f3b64d604612d4a599bdbb8b1cf204 (HEAD -> main, origin/main, origin/HEAD)
Author: ifireiceya <117034707+ifireiceya@users.noreply.github.com>
Date:   Mon Oct 31 00:01:05 2022 +0300

    Initial commit
(END)

Убедились, что у нас нет неучтённых изменений. Пора бы уже что-то сделать!

Открываем любимый текстовый редактор и создаём новый файл с именем hw.py.

Это будет небольшая программа на Python, которая при запуске печатает «Hello World!» (внезапно):

$ vi hw.py
print("Hello World!")

Отлично, код написан и даже хранится локально в нашем репозитории (мы же в директории проекта всё делали).

Теперь наша задача — сохранить изменения в «оригинальный» (удалённый) репозиторий. Для этого нужно:

  1. Познакомить Git с новым файлом, то есть добавить файл в индекс — git add.

  2. Зафиксировать (закоммитить) изменения — git commit.

  3. Синхронизировать изменения с сервером — git push.

  4. Посмотреть в репозиторий и убедиться, что всё сработало.

Делаем!

Мы уже создали файл и теперь можем посмотреть, в каком статусе Git

Мы уже создали файл и теперь можем посмотреть, в каком статусе Git

Появился файл hw.py, но он красный. Паника! Всё сломалось?!

Нет, всё идёт по плану, но прежде чем продолжить, стоит обсудить состояние файлов с точки зрения Git’а.

По мнению Git’а, файл может пребывать в одном из четырёх состояний:

  1. Неотслеживаемый (untracked).

  2. Изменённый (modified) — файл, в котором есть изменения, но он ещё не добавлен в коммит (не зафиксирован).

  3. Отслеживаемый (staged) — файл, который добавили в индекс.

  4. Зафиксированный (committed) — файл уже сохранён в локальной базе, и в нём не было изменений с последнего коммита.

Три секции проекта, с которыми работают в Git

Три секции проекта, с которыми работают в Git

В связке с состоянием файлов используют три основных секции проекта:

  • Рабочая директория (working directory) — это директория, которая содержит в себе то, с чем вы работаете, или то, что вы извлекли из истории проекта в данный момент. Рабочая директория — это временное место, где вы можете модифицировать файлы, а затем выполнить коммит.

  • Область индексирования (staging area) — индекс-файл в каталоге Git, который содержит информацию о том, что попадёт в следующий коммит.

  • Каталог Git — место, где Git хранит метаданные и базу объектов вашего проекта. Помните ещё про .git?

Что происходит на практике

Мы добавили новый файл hw.py и видим, что у него состояние untracked, то есть неважно, что мы делаем с файлом, Git проигнорирует любые изменения в нём.

Чтобы Git начал следить за изменениями в файле, его нужно добавить в индекс.

Для этого используем команду git add <имя файла>.

Кстати, вы заметили, что Git довольно дружелюбный и часто подсказывает команды, которые нужно выполнить?

$ git add hw.py
# если нужно добавить много файлов и не хочется описывать, можно использовать команду
# git add .
# но стоит точно понимать, что добавляем, иначе придётся потом удалять файлы из индекса
# кстати, для удаления используется команда git rm, но стоит почитать доку перед использованием

И ещё не забывайте о файле .gitignore, где перечислены папки и файлы репозитория, которые Git не должен отслеживать и синхронизировать их состояние (не добавлять их в индекс). Обычно в него добавляют файлы логов, результаты сборки и другое. Поддерживает шаблоны. Кстати, .gitignore — тоже файл, который надо добавить в индекс.

  • Если файл попадает в правила.gitignore, то он не появится в git status.

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

Посмотрим, как изменилось состояние нашего файла:

Смотрите, наш файл стал зелёным, и сообщение от Git изменилось. Сам файл теперь имеет состояние staged

Смотрите, наш файл стал зелёным, и сообщение от Git изменилось. Сам файл теперь имеет состояние staged

Давайте зафиксируем изменения, так как наша задача сейчас решена: мы написали программу на Python и хотим сказать Git, что вот теперь мы закончили работать с файлом и надо запомнить текущее состояние.

Для этого нужно закоммитить файл с помощью команды git commit.

При создании обычно лаконично описывают коммит, используя ключ -m:

$ git commit -m "add python hello world"     
[main 6d8a5c3] add python hello world
 1 file changed, 1 insertion(+)
 create mode 100644 hw.py

Пара слов о том, как писать сообщения для коммитов:

  • максимум 50 символов;

  • осознанно и понятно, как будто пишете для человека, который должен понять, что происходит внутри коммита;

  • сообщение стоит начинать с заглавной буквы;

  • если меняли код, пишите исходный код в сообщении.

$ git log

Осталось отправить наши изменения на удалённый сервер. Используем git push:

Осталось отправить наши изменения на удалённый сервер. Используем git push:
$ git push
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 341 bytes | 341.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:ifireiceya/MyFirstRepo.git
   9ae1cbc..6d8a5c3  main -> main

Предлагаем проверить, что наши изменения есть на GitHub. Идём в репозиторий и смотрим на него.

Появился наш файл и commit message, который задали

Появился наш файл и commit message, который задали

Задача немного посложнее

Всё здорово, но мы не всегда создаём репозитории, и часто нам нужно добавлять новые фичи или исправления в уже существующий репозиторий, да ещё и в чужой.

Например, есть у нас любимый опенсорсный проект, в который мы хотим принести добро и закрыть им какой-нибудь Issue.

В учебных целях используем репозиторий из этой статьи на GitHub. Там нужно исправить опечатку, которую нашли в статье. Например, вот эту очепятку.

Но будем делать это с позиции внешних пользователей в чужом репозитории.

Репозиторий хранится в ifireice/git, а изменения делает пользователь ifireiceya.

Пользователь ifireiceya не имеет доступа в ifireice/git, и ему придётся работать через Fork, то есть нужно сперва сделать копию этого репозитория к себе и вести разработку у себя, а потом отправить в основной репозиторий запрос на изменения — Pull Request.

Но обо всём по порядку. Сначала делаем Fork.

Заходим под пользователем ifireiceya в репозиторий ifireice/git и нажимаем на Fork(1)

Заходим под пользователем ifireiceya в репозиторий ifireice/git и нажимаем на Fork(1)

Откроется окно для создания нового форка (fork).

Изменится владелец репозитория (1), и опционально можно изменить описание проекта.

Нажимаем «Create fork» и получаем новенький форк

Нажимаем «Create fork» и получаем новенький форк
Можно увидеть новый репозиторий в списке наших репозиториев
Можно увидеть новый репозиторий в списке наших репозиториев

Вы можете делать любые изменения в собственной копии, и они никак не отразятся в оригинальном репозитории.

Теперь клонируем форк-репозиторий к себе на машинку и ведём разработку.

Только мы будем работать чуть-чуть по-другому, не как с нашим репозиторием.

В нашем репозитории мы работали в ветке main и все изменения сохраняли в ней.

А теперь у нас большой проект, и над ним одновременно могут трудиться несколько разработчиков. Чтобы разные изменения не смешивались в кучу и чтобы один разработчик не мешал другому, разработка ведётся в разных независимых версиях продукта — ветках (branch). Когда работа закончена, все изменения сливаются в одну главную ветку.

Клонируем репозиторий и создаём отдельную ветку, в которой будем устранять опечатку:

$ git clone git@github.com:ifireiceya/git.git
$ cd git
# создадим новую ветку и сразу же переключимся на неё, чтобы работать там
$ git checkout -b fix-misprint
Switched to a new branch 'fix-misprint'

Чтобы посмотреть, какие ветки есть в проекте и какая сейчас активна, используется команда git branch:

$ git branch
* fix-misprint
  main
# * помечена текущая активная ветка

На самом деле практика работать с ветками распространена не только при разработке в чужих репозиториях (collaborators), куда у вас нет доступа, но и в своих. Есть несколько стратегий выделения веток, но об этом не сейчас. Просто знайте, что есть ветки и с их помощью удобно вести разработку.

Можем посмотреть, что изменилось с последнего коммита, при помощи команды git diff (красным с “-” то, что было, зелёным с “+” — то, что стало):

$ git diff

Правим опечатку и всё по накатанной: смотрим status, делаем коммит и пушим изменения

Правим опечатку и всё по накатанной: смотрим status, делаем коммит и пушим изменения
$ git status
On branch fix-misprint
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

$ git commit -am "Поправили опечатку"
[fix-misprint 188caa7] Поправили опечатку
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git push
fatal: The current branch fix-misprint has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin fix-misprint

Упс, fatal. Читаем подсказку от Git и выполняем:

$ git push --set-upstream origin fix-misprint
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 402 bytes | 402.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
remote:
remote: Create a pull request for 'fix-misprint' on GitHub by visiting:
remote:      https://github.com/ifireiceya/git/pull/new/fix-misprint
remote:
To github.com:ifireiceya/git.git
 * [new branch]      fix-misprint -> fix-misprint
Branch 'fix-misprint' set up to track remote branch 'fix-misprint' from 'origin'.

Успех!

Почему произошёл fatal: простой git push предполагает, что ветка, которую отслеживает текущая локальная ветвь, уже существует на удалённом сервере. У нас ветка новая и была создана только локально, поэтому нам нужно её создать, указав --set-upstream.

Проверим, что ветка появилась на GitHub.

Заходим в репозиторий и нажимаем на кнопку «ветки» (1) → видим в списке нашу ветку (2)

Заходим в репозиторий и нажимаем на кнопку «ветки» (1) → видим в списке нашу ветку (2)

Форк сделали, ветку отвели, ошибку поправили, осталось отправить изменения в оригинальный репозиторий.

Для этого создаём Pull request.

Здесь живут пулл реквесты... когда они, конечно, есть

Здесь живут пулл реквесты… когда они, конечно, есть

И увидим такую картину.

(1) репозиторий, в который хотим добавить изменения. — ifireice/git

(2) ветка, в которую хотим добавить изменения — main

(3) репозиторий, из которого хотим добавить изменения — ifireiceya/git

(4) ветка, из которой хотим добавить изменения — main

Не пугайтесь, что GitHub считает, будто нет изменений: их нет, потому что мы работали в ветке fix-misprint. Меняем ветку, из которой вносим изменения (4), на нужную — и видим изменения

Не пугайтесь, что GitHub считает, будто нет изменений: их нет, потому что мы работали в ветке fix-misprint. Меняем ветку, из которой вносим изменения (4), на нужную — и видим изменения
Нажимаем кнопку «Create pull request» и пишем описание. Просматриваем ещё раз изменения. Если всё так, как нужно, ещё раз нажимаем «Create pull request»
Нажимаем кнопку «Create pull request» и пишем описание. Просматриваем ещё раз изменения. Если всё так, как нужно, ещё раз нажимаем «Create pull request»
Готово! У нас появился первый PR (ищите его в оригинальном репозитории в разделе Pull Requests)
Готово! У нас появился первый PR (ищите его в оригинальном репозитории в разделе Pull Requests)

На этом сейчас наша работа завершена. Ответственные за репозиторий посмотрят ваши изменения, примут их, или попросят что-то дописать, или отклонят изменения.

Будем считать, что у нас всё хорошо и наши изменения приняли без вопросов.

Как это выглядит на стороне ревьюверов:

Перешли в Pull Requests

Перешли в Pull Requests
Зашли в PR. Посмотрели описание, коммиты, какие изменения будут, и нажали кнопочку «Merge pulll request», если всё устраивает — нас всё устраивает
Зашли в PR. Посмотрели описание, коммиты, какие изменения будут, и нажали кнопочку «Merge pulll request», если всё устраивает — нас всё устраивает
Изменения помёржились
Изменения помёржились
В main ветке тоже можно увидеть и изменения из нашего ПР, и автора этих изменений. Надо лишь зайти в коммит
В main ветке тоже можно увидеть и изменения из нашего ПР, и автора этих изменений. Надо лишь зайти в коммит
Конец
Конец

На этом пока всё. Увидимся в следующих выпусках про Git и не только.

Что изучили

  • Поговорили про системы контроля версий

  • Настроили себе GitHub

  • Создали первый репозиторий и внесли в него изменения

  • Узнали про ветки, форки и остальное

  • Сделали первый ПР

Что НЕ изучили

  • Конфликты

  • Откат изменений (reset, revert)

  • Как забрать файл из другой ветки (Cherry-pick)

  • rebase

Что ещё почитать

  • Отличная книга Pro Git (есть на русском и английском)

  • Курс «DevOps для эксплуатации и разработки»

  • Trunk-Based Development — стратегия отведения веток

  • GitFlow — другая стратегия отведения веток

#статьи

  • 22 ноя 2022

  • 0

Краткий ликбез по самой популярной в мире платформе для хостинга IT‑проектов и совместной разработки.

Иллюстрация: GitHub / Colowgee для Skillbox Media

83 миллиона пользователей, четыре миллиона организаций и 200 миллионов репозиториев. В Сети много сервисов для размещения исходного кода своих проектов, но говорят чаще всего именно про GitHub. В чём же дело?

Конечно, известный владелец сервиса (Microsoft) и привычка играют свою роль, но главная причина — возможности платформы.

  • Что такое GitHub и чем он отличается от Git
  • Как понять, нужен ли вам GitHub
  • Основные концепции GitHub простыми словами
  • Создание репозитория и загрузка файлов
  • Просмотр файлов в репозитории
  • Поиск и чтение репозиториев
  • Создание веток
  • Переключение веток и решение конфликтов
  • Настройка описания репозитория
  • Создание сайта из вашего GitHub-профиля
  • Подключение GUI-клиента GitHub Desktop
  • Работа с GitHub через CLI
  • Настройка GitHub-профиля
  • Вместо end()

GitHub — это облачная платформа для хостинга IT-проектов и совместной разработки, под капотом которой находится популярная система контроля версий Git, а также полноценная социальная сеть для разработчиков.

Здесь можно найти кучу open-source-проектов на разных языках и поучаствовать в них, разместить своё портфолио с примерами кода, чтобы приложить ссылку к резюме, подглядывать в открытых проектах интересные архитектурные решения, смотреть, как опытные разработчики пишут код, и скачивать огромное количество полезных в разработке и бесплатных инструментов для разработки. Кстати, некоторые умельцы умудряются собирать в GitHub целые библиотеки — книг и статей, а не программистские либы :)

И да, если вы недовольны какими-то фичами в любимой открытой программе и она выложена на GitHub, вы всегда можете прийти и поругаться в комментариях к проекту :) А лучше всего — оформить issue (мы расскажем, что это) и самостоятельно пофиксить проблему на радость всем пользователям. Не забывайте и благодарить авторов классных открытых проектов — донатами и просто тёплыми словами. Им будет очень приятно.

Придя практически в любую IT-компанию, вы столкнётесь с тем, что код где-то хранится — и в подавляющем большинстве случаев этим «где-то» будет именно GitHub. У GitHub есть довольно известный конкурент — GitLab, он тоже основан на Git, но это разные платформы разных компаний, хотя их функциональность очень похожа.

А ещё не стоит путать GitHub и Git. GitHub — лишь одна из реализаций системы контроля версий Git (только взгляните на полный список Git-клиентов с графическим интерфейсом), в которую добавлено много удобных инструментов и возможностей (те же комментарии, issues, гиперссылки, форматированный текст и тому подобное). Помните, GitHub можно использовать и без знания Git (обратное тоже верно).

Ну как, звучит круто? Тогда приступайте к нашему гайду о том, как пользоваться GitHub, чтобы во всём разобраться и вообще понять, нужен ли он вам прямо сейчас.

Безусловно, GitHub нужен не всем. Допустим, вы ещё только учитесь кодить или неспешно делаете небольшой проект для личного пользования — и вас устраивает хранение проекта на локальной машине. Может, сейчас вы просто учите язык, который вам нравится, и на данном этапе не хотите хвататься за всё сразу.

В первую очередь GitHub необходим проектам с частыми обновлениями, множеством версий, большим количеством файлов, необходимостью синхронизации разработки и удобного развёртывания.

И действительно, есть множество других способов хранения исходников: можно создать для них папку в разделе «Мои документы», закидывать их в облако и подписывать версии или даже загружать в «Избранное» в Telegram или «ВКонтакте» (костыльно, да, но вполне реально).

А ещё можно накидывать список изменений в заметках в телефоне/на холодильнике текстом в приватном Telegram-канале. Можно деплоить проект с помощью простого скачивания и распаковки ZIP-архива с файлами вашей программы (особенно если цель — просто показать программу другу или девушке, которой вы пришли «помочь с ноутбуком» ^_^). В конце концов, можно сообщать о багах в вашем любимом фреймворке сообществу анонимов в паблике в VK — возмущаться вместе очень весело.

Все эти способы по-своему хороши, но для работы в IT нужно привыкать к GitHub: это стандарт индустрии.

Интересный факт: недавно появилась российская альтернатива GitHub под названием GitFlic. Команда сервиса заявила, что намерена дать «новый импульс разработке отечественных операционных систем, программ, приложений и серверных решений». Среди цепляющих возможностей — интеграция с Telegram.

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

Это Фрай. Он не смог использовать GitHub и улетел в будущее. Не будьте как Фрай
Кадр: мультсериал «Футурама»

Новичков интерфейс GitHub может сбивать с толку: за годы с момента создания площадка обросла множеством инструментов, но главное остаётся неизменным.

Почти вся терминология наследуется у Git. Основные термины — репозиторий, ветка, коммит, форк. Выбор некоторых из этих названий может показаться не очень интуитивным (даже если вы владеете английским), но так уж сложилось.

Как заливать файлы, создавать репозитории и проводить другие операции, мы рассмотрим в следующем разделе, так что не пугайтесь упоминания разных действий в определениях терминов — всё покажем с картинками :)

Это просто корневая папка с файлами и вложенными директориями вашей программы — и одновременно её страница на GitHub. Загрузить в репозиторий можно всё что угодно, но предполагается, что вы будете хранить в нём файлы с исходным кодом и какие-нибудь дополнительные материалы — допустим, необходимую для GUI или вёрстки графику (картинки, иконки и тому подобное).

Репозитории могут быть публичными и приватными, в них можно создавать другие папки и отслеживать изменения версий. Управлять своими репозиториями можно прямо через интерфейс сайта, командную строку, десктопное приложение GitHub или различные средства разработки (IDE), поддерживающие интеграцию с сервисом.

В ветки группируются изменения и обновления — допустим, одна главная ветка (по умолчанию создаётся main) и одна beta. Ветки независимы друг от друга, но при желании их можно объединять (merge — слияние) — даже если между ними есть разница в коде.

Внести в содержимое репозитория изменения можно напрямую или создав копию. Само внесение изменений называется «коммит» (от английского commit — совершить), у него есть временная метка и хеш-сумма.

Перенос изменений-коммитов из локального репозитория (на вашем ПК) на удалённый (remote repository, то есть в данном случае на GitHub) называется «пуш» (push) — от английского «толкать» (дословно — «проталкивать» изменения).

Скопировать репозиторий для внесения изменений в копию можно двумя основными способами:

  • клонировать (clone) — то есть просто скопировать на локальный компьютер или сервер;
  • или форкнуть (от английского fork — развилка) — сделать отдельную копию репозитория (обычно чужого) для продолжения разработки «по другому пути развилки».

Если вы форкнули чужой проект, чтобы предложить автору конкретные улучшения, нужно по готовности «запулить» их в исходный репозиторий — то есть сделав pull request (запрос на изменения).

Это 90% необходимых фактов. Более скучные подробности описаны в документации и разделе обучения GitHub, а также в руководстве по самому Git, ну а мы попробуем применить всё это на практике.

Конечно, самый простой способ пользоваться GitHub — через сайт, поэтому начнём отсюда.

Самые типичные действия при работе с репозиторием — его создание и загрузка файлов, их мы уже рассматривали ранее. Легко убедиться, что обе задачи занимают не больше 30 секунд.

Очень кратко повторим выводы из нашего прошлого материала:

  • для создания репозитория нужно нажать на + в правом верхнем углу сайта, выбрать пункт New Repository, заполнить название и описание, проставить нужные галочки и щёлкнуть на Create Repository;
  • для загрузки файлов нужно зайти в нужный репозиторий, щёлкнуть на Add file и выбрать Upload files.

Шаг 1. Создание GitHub-репозитория в веб-версии
Скриншот: Skillbox Media

Шаг 2. Страница создания GitHub-репозитория
Скриншот: Skillbox Media

Но для обучения Тёмной стороне Силы работе с GitHub полезно потренироваться выполнять и другие необходимые в процессе разработки действия: клонирование/форк, объединение веток, просмотр и разрешение конфликтов и другие.

Давайте пошагово пройдём всё это вместе — сначала через сайт, а потом взглянем одним глазком на работу через GUI-клиенты и интерфейс командной строки (CLI).

Выбор файлов в GitHub-репозитории для их просмотра
Скриншот: Skillbox Media

Согласитесь, что в ряде случаев удобно не скачивать исходники, а просто бегло ознакомиться с ними. Для таких простых операций вовсе не нужен десктопный клиент: все файлы можно быстро открыть в веб-версии (и код, и те же картинки). Просто щёлкните по ним для просмотра!

На этой картинке — просмотр файла с кодом. Всё как полагается: есть нумерация строк и подсветка синтаксиса
Скриншот: Skillbox Media

А здесь — просмотр картинки, которая нужна нам для GUI и потому также залита в репозиторий
Скриншот: Skillbox Media

Хотя сёрфинг по чужим репозиториям — залипательное времяпровождение, в первую очередь это один из способов нахождения полезных инструментов вам в помощь. Над многими функциями, которые вы хотели бы добавить в своё приложение, уже кто-то работал, остаётся только найти GitHub-репозитории таких проектов.

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

Для примера: это официальный GitHub-репозиторий Android-приложения Telegram. Смотрим на детали: краткое описание — About (Telegram for Android source), две ветки (там master и dev), в мастере 462 коммита, 227 пул-реквестов, последний релиз шесть дней назад, лицензия GPL 2.0, 1,2 тысячи наблюдателей, 7,1 тысячи форков и целая 21 тысяча добавлений в закладки
Скриншот: Skillbox Media

Важнее другое — на что обращать внимание. Пройдёмся по некоторым пунктам со скриншота выше.

Во-первых, самое очевидное — это описание на главной странице. Именно в нём находится ответ на ваш главный вопрос — что это и чем может вам помочь.

Если точнее, предусмотрено два описания репозиториев — краткое (один абзац справа вверху) и полное (по центру, под списком файлов).

Если репозиторий кажется полезным, дальше нужно понять, на каких условиях вы можете его использовать, что зависит от указанной автором лицензии.

После этого оцените, подходит ли вам частота обновлений, — это можно сделать в разделе Releases (ссылка прямо под кратким описанием). Конечно, это зависит от ситуации: где-то может пригодиться инструмент, который не обновлялся четыре года, но чаще всего нужна хотя бы минимальная поддержка — то есть обновления минимум раз в несколько месяцев.

Важно знать и где посмотреть количество и содержание коммитов — кликабельный счётчик находится над списком файлов справа.

Наконец, стоит взглянуть и на количество отметок, демонстрирующих популярность проекта среди сообщества, — отслеживаний, форков и звёздочек (это в каком-то смысле местные аналоги лайков и репостов).

Ещё чуть ниже справа — одна из самых интересных штук: анализ используемых в репозитории языков программирования. В репозитории со скриншота выше набор выглядит так.

Языки программирования, на которых написан код загруженных в репозиторий исходников Android-приложения Telegram
Скриншот: Skillbox Media

Вообще, неплохо изучать репозитории известных приложений, которыми сами пользуетесь (как на скриншоте выше), и отмечать понравившиеся звёздочками. Это не только интересно — со временем GitHub изучит ваши предпочтения и станет предлагать в блоке Explore то, что вам может понравиться.

Пример: GitHub-репозиторий VK
Скриншот: Skillbox Media

Создаём альтернативную ветку №1 — koshka
Скриншот: Skillbox Media

Создать новую ветку очень просто:

  • Жмём на большую зелёную кнопку New branch.
  • Вводим название новой ветки.
  • Выбираем исходную ветку для копирования (то есть main, так как пока других и нет).
  • Щёлкаем на Create branch.

В данном случае нужно сначала уточнить, что имеется в виду: если необходимо просто зайти в альтернативную ветку, это можно сделать в списке веток репозитория (нужная ссылка есть над списком файлов).

Создадим также альтернативную ветку №2 (sava) и посмотрим, как всё это выглядит в итоге.

Список веток репозитория: основная и две альтернативных
Скриншот: Skillbox Media

Можно говорить и про переключение между ветками в другом смысле — когда изменения из альтернативной ветки сливают с главной веткой. Смотрите: у нас есть файл code.js, но его содержимое немного отличается:

  • в ветке main там JS-команда console.log («Дефолтная ветка») и картинка с великим маэстро современности Риком Эстли;
  • однако в ветке koshka тот же файл содержит команду console.log («Кошка!»);, а вместо Рика — смешной кот;
  • и всё совсем усложняется третьей веткой sava, где консольный вывод вида console.log («Сова!»); и используется картинка с совой (естественно, все перечисленные картинки во всех ветках называются одинаково — pic.jpg).

Получается, между ветками есть конфликт и просто слить любую из альтернативных веток с главной нельзя! Но для этого уже есть решение: GitHub предлагает нам сравнить конфликтующие ветки, и если мы захотим, то и запулить изменения в основную — то есть сделать тот самый pull request, о котором говорилось выше.

Так GitHub сообщает, что в некоторых ветках есть изменения
Скриншот: Skillbox Media

Вот как выглядит сравнение веток (c koshka и sava соответственно).

Сравнение ветки main с веткой koshka
Скриншот: Skillbox Media

Сравнение ветки main с веткой sava
Скриншот: Skillbox Media

Допустим, мы решаем принять изменения из ветки sava и создаём pull request с небольшим комментарием.

Создание пул-реквеста для слияния изменений из ветки sava с веткой main
Скриншот: Skillbox Media

Дальше он появляется в списке пул-реквестов репозитория, где мы определяем дальнейшую судьбу данного запроса на изменения.

В соответствующем разделе репозитория появился новый пул-реквест
Скриншот: Skillbox Media

Пул-реквест можно окончательно принять, подтвердив слияние (merge) веток, или отклонить, закрыв запрос (Close pull request).

Шаг 1. Рассмотрение пул-реквеста
Скриншот: Skillbox Media

Шаг 2. Рассмотрение пул-реквеста
Скриншот: Skillbox Media

При этом главную ветку main можно защитить от изменений, включив соответствующие опции в настройках репозитория (что вам и будет предложено при создании новых веток).

GitHub предлагает защитить ветку от нежелательных изменений
Скриншот: Skillbox Media

Чтобы поменять данный ряд параметров, зайдите в своём репозитории в раздел Settings -> Branches. Нужные настройки — в подразделе Branch protection rules (целых 10 галочек на выбор).

Основное описание вашего GitHub-проекта задаётся в файле Readme.md, который можно создать вместе с репозиторием или после. Расширение md — это просто сокращение от названия популярного языка упрощённой разметки контента — Markdown.

Содержимое файла Readme отображается на главной странице репозитория и отвечает на вопрос, что это за проект, чем он может быть полезен другим разработчикам и как им воспользоваться.

Чтобы оформить Readme со вкусом, можно воспользоваться руководством GitHub по markdown-разметке. Вот как будет выглядеть Readme нашего репозитория-примера после прокачки (первый и второй экран соответственно).

Настройка файла Readme GitHub-репозитория
Скриншот: Skillbox Media

Настройка файла Readme GitHub-репозитория
Скриншот: Skillbox Media

Обратите внимание: в оформлении можно использовать всё что угодно — заголовки разных уровней, выделение жирным/курсивом, изображения, эмодзи, ссылки и так далее.

Файл Readme может быть довольно длинным, но всё же для оформления большой документации GitHub рекомендует создать «Вики».

Захостить сайт на GitHub можно с помощью функции GitHub Pages. Это очень просто:

  • Зайдите в настройки репозитория.
  • В блоке Code and automation выберите Pages.
  • Выберите источник (Deploy from a branch, затем нужную ветку).
  • Кликните на Save.
  • Обновите страницу, и вверху страницы появится ссылка на ваш новый сайт.

Пример сайта на GitHub Pages
Скриншот: Skillbox Media

В случае создания сайта для продвижения себя, а не проекта, просто создайте репозиторий с кодом сайта-визитки и дайте ему имя вида [username].github.io, где username — название вашего аккаунта на GitHub. Более подробно про эту функцию — тут.

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

  • Скачиваем и устанавливаем сам клиент.
  • Авторизуемся в своей учётной записи.
  • Работаем с существующими репозиториями или создаём новые (локальные).

Главное меню GUI-клиента GitHub Desktop для Windows. Видим в списке и наш репозиторий skillbox_cool, описанный выше
Скриншот: Skillbox Media

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

Клонирование репозитория в десктопном клиенте GitHub
Скриншот: Skillbox Media

Клонированные из удалённого GitHub-репозитория файлы хранятся в специальной папке на вашем компьютере, и в них легко вносить изменения — клиент будет открывать их в выбранном вами редакторе кода / среде разработки (хотя удобнее всё по отдельности — выбрав нужный файл-исходник в папке).

В общем, всё просто, как раз-два-три.

Работать с GitHub можно и через командную строку Windows или PowerShell. Это не очень сложно: для начала интерфейс командной строки также нужно скачать и установить (документация — здесь).

Работа с GitHub CLI в PowerShell
Скриншот: Skillbox Media

Команды для GitHub CLI начинаются с сокращения gh — к примеру gh repo clone.

Интерфейс GUI Git
Скриншот: Skillbox Media

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

Работа с Git CLI в PowerShell
Скриншот: Skillbox Media

Главное, что нужно про это знать: все команды Git начинаются соответственно — со слова git, после чего указывается тип действия: git clone, git merge, git fork и прочее. Чтобы воспользоваться ими, установите Git, распечатайте себе любую памятку по его командам и смело начинайте ими пользоваться.

Кастомизация профиля — важная часть самопрезентации разработчика: резюме, визитная карточка и витрина проектов, над которыми вы работали.

Эту информацию оценивают работодатели, поэтому стоит заполнить информацию о себе и сделать публичными несколько ваших лучших репозиториев (конечно, если там ничего секретного :)) — именно они будут частью вашей персональной витрины.

Посмотрим на профиль какого-нибудь крутого разработчика из тех, кто сейчас в тренде GitHub (да-да, есть и такой раздел).

Топ-25 разработчиков по версии GitHub (на момент написания материала)
Скриншот: личный архив автора

На первом месте — некий Стивен Селис. А что в его профиле? Указано место работы, есть сайты и контакты, а в статистике — 123 репозитория и 1725 изменений в репозиториях за год (круглый год). То есть невооружённым глазом видно, что человек как минимум активный и опытный.

GitHub-профиль одного из топовых разработчиков (1-е место в рейтинге GitHub на ноябрь 2022 года). Зелёные квадратики — это активность автора
Скриншот: Skillbox Media

Даже если вы пока ещё не в топе GitHub, нужно стремиться к подобному наполнению профиля: подробная информация + показательный ряд проектов (вы можете закреплять их по-своему, нажав в собственном профиле на Customize your pins).

Всё не так сложно, как может показаться (говоря иносказательно, каждый разработчик в своей жизни сначала учится есть вилкой, а потом — форкать GitHub-репозитории).

GitHub пользуются все: это один из важных общих навыков вне зависимости от выбранного вами языка программирования и направления разработки. И, как и школьные уроки ОБЖ, тот же git clone когда-нибудь вас спасёт.

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

Научитесь: Профессия Java-разработчик
Узнать больше

Разработчики программ используют в работе различные платформы для обмена исходным кодом, его хранения и распространения. Одной из таких платформ является GitHub. Она настолько популярна, что ее мощностями пользуются даже такие «монстры», как Microsoft и RedHat. Инструментарий платформы включает возможности просмотра кода, а также его распространения с документацией и релизами.

Гитхаб

Веб-сервис GitHub востребован для хостинга IT-проектов и совместной разработки. Разработчики системы называют ее «социальной сетью» для программистов. Здесь они объединяют репозитории, комментируют примеры «чужого» кода и используют платформу в качестве облачного хранилища с возможностью быстрой передачи заказчику.

Создание аккаунта в Github

Первый шаг к использованию сервиса GitHub заключается в регистрации нового пользователя. В процедуре нет ничего сложного – достаточно зайти на официальный сайт https://github.com/ и создать новую учетную запись. Система запросит рабочую электронную почту.

Пароль вводится на выбор пользователя, но с учетом правил. Так, рекомендуется комбинация размером в 15 символов или 8, но с использованием хотя бы одной цифры и строчной буквы. Имя пользователя, как и email, проверяется на занятость, и придется выбирать тот, с которым платформа позволит продолжать регистрацию.

Далее нужно указать, хочется ли получать новости об обновлениях продуктов и самой системы. Последним шагом становится подтверждение – пользователю предлагается собрать паззл, после чего станет активной кнопка «Зарегистрироваться».

Вход на платформу будет открыт только после подтверждения электронной почты, поэтому зайти анонимно не получится. Это своеобразная защита сервера от многочисленных ботов и гарантия для пользователей, что они будут общаться с реальными людьми. Теперь можно приступать к управлению настройками внутри личного кабинета.

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Создание репозитория

Важно отметить, что сервис англоязычный, и пользоваться им без знания языка получится только при использовании обновленных версий браузеров типа Google Chrome, где есть встроенные функции по переводу страниц. В любом случае работа начинается с создания собственного репозитория – в бесплатном режиме доступны публичные, частные откроются только при активации платного тарифа.

Последовательность действий:

  1. Нажать на кнопку «Start a project».
  2. Ввести название и описание репозитория.
  3. Поставить галочку на «Initialize this repository with a README».
  4. Выбрать нужный тип лицензии и нажать на кнопку «Create project».

Тип лицензии (приватная или публичная) допускается заменить после, в процессе использования платформы. Единственная настройка, которую пользователи делают сразу, – это создание нескольких веток для размещения разных проектов. Например, для тестового кода и финальных релизов, чтобы не путать их при разработке и общении с другими кодерами.

Проект в ГитхабеПодобный подход часто используют создатели продуктов, которыми пользуются «массы». Им передается ссылка на проверенные стабильные версии, в то время как команда продолжает работу над таким же комплектом файлов без опасения нарушить функциональность системы в целом. При использовании платформы следует ориентироваться на отметку «Branch».

Данная отметка обозначает текущую ветку. Создание новой инициируется просто – достаточно в списке начать набирать еще несуществующее название, и система выдаст сообщение «Create branch». Сразу после этого пользователь перекидывается в новую ветку (это стоит учитывать при работе, чтобы случайно не начать редактирование «не тех файлов»).

Изменение файлов и коммиты

Корректировка файлов на GitHub выполняется при помощи коммитов. Это непосредственно само исправление и краткое описание изменений. Такой подход позволяет «внешним» пользователям ориентироваться в нововведениях кода и упрощает контроль командной работы, когда один и тот же файл может редактироваться разными исполнителями.

Система сохранения информации о корректировках удобна, когда они вносятся в различные участки кода, но связаны с определенной задачей. Фактически текстовый файл с описанием «связывает» разрозненные изменения и объясняет непосвященному программисту их суть, назначение. Чтобы запустить редактирование README, нужно в правой панели нажать на «кисточку».

КоммитПосле этого откроется текстовый редактор, где вносятся исправления. По завершении заполняется поле «Commit» внизу страницы (кратко, что изменилось) и нажимается кнопка «Commit changes». Сохраненные корректировки будут внесены в текущую (активную) ветку проекта, поэтому перед их внесением следует убедиться в правильном выборе.

Создание запросов слияния (Pull Request) в Github

При подключении к работе сторонних специалистов может понадобиться функция запроса слияния (Pull Request). Инструмент для работы в таком формате называется DIFF. Он подчеркивает любые «чужие» изменения, чтобы владелец программы сразу видел, где код писал не он. Пометки будут доступны только после создания коммита.

Пулл ркеквест

Последовательность действий:

  1. Открыть вкладку «Pull Request».
  2. Нажать на кнопку «Create Pull Request».
  3. Выбрать ветку, которую следует слить с основной.
  4. Просмотреть внесенные кодером изменения.

После изучения информации созданный запрос на слияние подтверждается нажатием «Merge Pull Request». Новый код будет импортирован в основную ветку, а созданная сторонним исполнителем может спокойно удаляться.

Отчеты об ошибках

Платформа GitHub используется не только для совместной разработки, а еще и для получения обратной связи с пользователями продуктов. Так, на вкладке «Issue» любой «тестировщик» может оставить сообщение о проблемах, с которыми ему пришлось столкнуться при использовании ПО. Чтобы сделать это, нужно нажать кнопку «New issue».

После этого вносится заголовок и текст сообщения. «Проблема» отправляется нажатием на кнопку «Create new issue». Владелец ветки получает уведомления в личном кабинете или на электронную почту, указанную при регистрации.

Заключение

Финалом разработки обычно становится выпуск определенного релиза программного продукта. Это отражается на вкладке «Releases». Здесь следует нажать на кнопку «Create New Release», указать номер версии в поле «Tag Version», внести ее название и небольшое описание. Здесь же прикрепляются архивы с компилированными файлами.

Остается нажать на «Create Release» и убедиться в публикации релиза. Ссылки на исходный код в tar.gz и zip создаются автоматически. Остальные файлы понадобится добавлять вручную.

Понравилась статья? Поделить с друзьями:
  • Овальный коврик крючком из старых вещей пошаговая инструкция для начинающих
  • Ортез плечевой orlett si 301 по типу повязки дезо инструкция
  • Норбактин инструкция по применению цена отзывы аналоги таблетки взрослым
  • Периндоприл плюс амлодипин инструкция по применению цена отзывы аналоги
  • Инструкция звуковая карта u phoria um2