Github: что это такое и как его использовать
Github – это очень известная платформа для хранения, распространения и управления исходным кодом открытых проектов. Github использует множество разработчиков по всему миру, среди которых есть и крупные компании, такие как Microsoft, RedHat и другие.
Github предоставляет возможности не только по просмотру кода и его распространения, но также историю версий, инструменты совместной разработки, средства для предоставления документации, выпуска релизов и обратной связи. И самое интересное, что вы можете размещать на Gihub как открытые, так и приватные проекты. В этой статье мы рассмотрим как пользоваться Github для размещения своего проекта. Так сказать, github для начинающих.
Допустим, у вас есть свой проект и вы хотите разместить его код на Github в открытом доступе чтобы другие пользователи могли его посмотреть и участвовать в разработке. Первое что вам нужно сделать – создать аккаунт.
GitHub Issues
GitHub Issues – одна из наиболее популярных в мире систем отслеживания багов.
Она предоставляет владельцам репозиториев возможность организовывать, отмечать тегами и привязывать проблемы к контрольным точкам.
Если вы найдете проблему в проекте, управляемом кем-то другим, она будет открытой до тех пор, пока вы не закроете ее (например, если выясните, в чем заключается проблема) или пока владелец репозитория не закроет ее.
Иногда вы будете получать окончательный ответ, а иногда проблема будет оставаться открытой и будет помечена некоторой информацией, которая ее классифицирует. Затем разработчик может вернуться к тегу, чтобы исправить проблему или улучшить кодовую базу с помощью ваших отзывов.
Большинству разработчиков не платят за поддержку их кода, выложенного на GitHub, поэтому нельзя ожидать быстрых ответов. Но некоторые репы с открытым исходным кодом публикуются компаниями, которые предоставляют услуги для этого кода. Они предлагают коммерческие предложения для версий с большим количеством функций или используют архитектуру на основе плагинов. Поэтому они платят разработчикам, работающим над проектом с открытым исходным кодом.
Создание аккаунта на Github
Чтобы создать новый аккаунт на сайте откройте главную страницу GitHub и тут же сразу вы можете ввести данные для новой учетной записи. Вам нужно указать имя пользователя, Email и пароль:
Когда завершите ввод, нажмите кнопку “Sign Up Free.
Никакая настройка github не нужна, достаточно лишь несколько кликов мышкой.
На следующем шаге вам нужно выбрать тип репозитория. Для open-souce проектов использование сайта бесплатно. При необходимости иметь приватные репозитории, есть возможность перейти на платный тарифный план:
Аккаунт готов, и вы будете перенаправлены на страницу, где сможете создать свой первый проект. Но перед тем как вы сможете это сделать, нужно подтвердить свой Email адрес. Для этого откройте ваш почтовый ящик и перейдите по ссылке в письме от Github. Сейчас у нас нет ни одного репозитория, и мы можем либо создать новый репозиторий, либо ответвиться (fork) от уже существующего чужого репозитория и вести собственную ветку разработки. Затем, при желании, свои изменения можно предложить автору исходного репозитория (Pull request).
Создание репозитория в Github
На открывшейся странице, это главная страница для авторизованных пользователей, нажмите кнопку “Start a project”:
Дальше введите имя и описание будущего репозитория:
Вы можете сразу же инициализировать репозиторий, создав файл Readme, для этого нужно отметить галочку “Initialize this repository with a README” внизу страницы. Также можно выбрать лицензию:
Когда все будет готово, выберите “Create project”, будет создан новый проект с файлом README, в котором находится описание и файлом лицензии.
Добавление веток
Ветки Github позволяют работать с несколькими версиями проекта одновременно. По умолчанию при создании репозитория создается ветка master, это основная рабочая ветка. Можно создать дополнительные ветки, например, для того, чтобы тестировать программное обеспечение перед тем, как оно будет опубликовано в ветке master. Таким образом, можно одновременно разрабатывать продукт и предоставлять пользователям стабильную версию. Также можно создавать отдельные ветки для версии программы для разных систем.
Текущая ветка обозначена в верхнем левом углу после слова “Branch”. Чтобы создать новую ветку просто разверните этот список и начните набирать ее имя:
Сайт сам предложит вам создать новую ветку, выберите “Create branch”. Сразу же после создания вы будете работать с только что созданной веткой.
Изменение файлов и коммиты
Любые изменения файлов на Github делаются с помощью коммитов. Коммит выполняется путем внесения самих исправлений и описания этих исправлений. Это необходимо для того, чтобы вы знали что и когда вы меняли, а также позволяет легко отслеживать работу команды. Слово коммит можно перевести как “фиксировать”. То есть мы можем внести изменения в несколько файлов, а затем их зафиксировать. Давайте для примера изменим файл README. Для этого найдите в в правой стороне панели кнопку с кисточкой и нажмите на нее:
Откроется текстовый редактор, где вы можете ввести нужные вам исправления:
После того как вы сделаете все что вам нужно, необходимо заполнить поле “Commit” внизу страницы. Кратко опишите что было изменено, а затем нажмите кнопку “Commit changes”:
Эти изменения будут внесены в текущую ветку проекта, поскольку мы сейчас работаем с testing, то и изменения будут отправлены именно туда.
Новый Github Desktop
Github выпустил обновленную версию Github Desktop — программы под Windows 7+ и OS X, которая дублирует функциональность сайта github.com, но при этом работает локально на компьютере разработчика.
Github Desktop упрощает многие действия в рабочем процессе и заменяет Github for Mac и Github for Windows на новый унифицированный интерфейс.
Ветви Github Desktop
Ветви всегда доступны в левом верхнем углу в режиме просмотра репозитория. Можно быстро выбрать нужную ветку или создать новую.
Совместная работа
Просмотр изменений (diff) до отправки коммита на сайт, в программе сразу видно, в каких файлах и строчках сделаны изменения. Коммит отправляется из окна программы, без использования командной строки.
Прямо из программы отправляются и пул-реквесты.
Слияние и развертывание
Просмотр коммитов в локальной и удаленной ветке, где сразу ясно видно, какие конкретно изменение нужно слить с проектом. Прямо из программы можно слить свой код в основную ветку для развертывания.
Просмотр истории
Интерактивный график с визуализацией сделанных изменений и коммитов. Прямо на графике можно выбрать коммит и просмотреть историю изменений в локальной ветке.
Некоторые пользователи жалуются, что программа подтормаживает на сложных проектах.
Github командная строка
Консоль — ваш друг. По моему опыту, освоение работы с Github через командную строку — лучшая трата времени, когда работаешь с open source-технологиями. Да, существует много хороших графических интерфейсов, но все они менее гибки в использовании. Кроме того, есть инструменты только под командную строку, которые сильно упрощают жизнь и повышают эффективность разработки:
Управление проектами (Project management)
Наряду с issues, благодаря которым разработчики получают обратную связь от пользователей, интерфейс предлагает и другие функции, позволяющие управлять проектами.
Одна из них – Projects. Это новый раздел, который очень редко используется. Это система «Канбан», которая помогает организовать баги и работу, которую необходимо выполнить.
Также в управлении проектами помогают контрольные точки. Это часть страницы issues. Вы можете соотнести проблемы с определенными контрольными точками, которые могут быть целями релизов.
Представив релизы, GitHub расширил функциональность тегов GIT.
Тег GIT — это указатель на конкретную версию. Если он выполняется последовательно, то помогает вам вернуться к предыдущей версии кода без ссылки на конкретные версии.
Релиз построен на основе тегов GIT и представляет собой полную версию вашего кода, а также zip-файлы, заметки о выпуске и двоичные ресурсы, которые могут представить полностью рабочую версию конечного продукта кода.
Хотя тег GIT можно создавать программно (например, с помощью тега git из командной строки), создание релизов GitHub – это ручной процесс, который происходит в пользовательском интерфейсе GitHub. Вы, по сути, говорите GitHub создать новый релиз и сообщаете, к какому тегу вы хотите применить его.
Сравнение коммитов на GitHub
GitHub предлагает множество инструментов для работы с кодом.
Одна из самых важных вещей, которые вы можете сделать, — это сравнить одну ветку с другой. Вы также можете сравнить последний коммит с тем, который используете в данный момент, чтобы увидеть, какие изменения были внесены с течением времени.
Webhooks и Services на GitHub
GitHub предоставляет множество функций, которые помогают рабочему процессу разработчика: например, вебхуки и сервисы.
Webhooks
Вебхуки позволяют пинговать внешние сервисы, когда в репе происходят определенные события. Например, это может произойти, когда для кода используется команда push, создается ответвление или если тег создается или удаляется.
Когда происходит событие, GitHub отправляет запрос POST на URL, который мы говорим ему использовать.
Обычно эта функция используется для проверки связи с удаленным сервером. Это нужно, чтобы получить последний код из GitHub, когда мы отправляем обновление с нашего локального компьютера.
Мы отправляем команду push к GitHub, он сообщает серверу об этом, и сервер извлекает данные.
Services
Сервисы GitHub и новые приложения представляют собой сторонние интеграции, которые улучшают работу разработчика или предоставляют услуги.
GitHub
GitHub — это сервис для совместной разработки и хостинга проектов. C помощью GitHub над кодом проекта может работать неограниченное количество программистов из любых точек мира. В GitHub есть система контроля (управления) версий Git: сервис позволяет просматривать и контролировать любые изменения кода любым разработчиком и возвращаться к состоянию до изменений.
В целом GitHub — это социальная сеть для разработчиков, в которой можно найти проекты с открытым кодом от других разработчиков, практиковаться в написании кода и хранить свое портфолио.
Проекты в GitHub
Проект в GitHub хранится в репозитории (repository) — коллекции всех изменений создаваемого кода. Если вы будете работать над проектом в одиночку — вам нужно создать новый репозиторий. Если в вашем проекте несколько разработчиков — каждый из них будет клонировать репозиторий первоначального создателя проекта.
Внутри репозитория изменения кода хранятся в виде веток и коммитов.
Коммит (commit) — основной объект разработки, в котором хранятся все изменения кода за итерацию. По сути, это список со всеми актуальными изменениями и ссылка на предыдущую версию коммита. У каждого коммита есть атрибуты: имя, дата создания, автор и комментарии к текущей версии (например, «Создал страницу courses.html» при разработке сайтов с видеокурсами).
Ветка (branch) — указатель на коммит с определенными изменениями. Например, два разработчика взяли коммит, и каждый из них сделал свои изменения в коде, создав по новому коммиту («Создал страницу coursеs.html c личным кабинетом» и «Создал страницу courses.html со свободным доступом на курсы»). Так в проекте появились две ветки с разным кодом: разработчик может выбрать, над каким коммитом ему работать дальше.
Основной веткой проекта, как правило, считается ветка main или master — разработчики создают новые ветки на ее основе. Также можно создать неограниченное количество веток, чтобы вносить новые изменения, не мешая основному проекту.
Слияние веток
Часто разработчики делают параллельные изменения кода. Например, один разработчик работает над внешним видом сайта, а другой занимается размещением контента на нем. По окончании работы ветки каждого из них можно объединить в одну, чтобы создать коммит со всеми внесенными разработчиками изменениями.
Для этого в Git используют функцию pull request (pr). Pull request — это заявка на слияние кода из разных веток. В процессе слияния Git создаст коммит и покажет все изменения в файле кода: добавленные до разветвления строки подсветятся зеленым цветом, удаленные — красным. Так каждый из разработчиков и менеджер проекта увидят, что произошло с кодом после совместной работы над коммитом. Перед окончательным слиянием (merge) все разработчики должны просмотреть изменения кода (code review) и принять их.
Изучите с нуля алгоритмы и структуры данных, поработайте с Git и станьте востребованным специалистом. Дополнительная скидка 5% по промокоду BLOG.
Процесс pull request
Теперь посмотрим на процесс со стороны владельца проекта, который получил новый pull request. Владельцу нужно его обработать и объединить ветку sme-review с master.
Пример ревью кода, где есть разрешение на слияние в главную ветку
Пример ревью кода, где нет разрешения на слияние
Ревью кода
Ревью кода (code review) — процесс обсуждения изменений кода после совместного создания коммита и перед окончательным слиянием. В ревью разработчики оставляют комментарии к строкам с измененным кодом, а в случае ошибок или упущенных моментов предлагают решения по улучшению кода.
После ревью разработчики должны закрыть комментарии и принять предлагаемые изменения (функция approve). Git объединит ветки с помощью функции merge и перенесет созданный коммит в основную ветку main. В истории коммитов останется отметка о проведенном слиянии веток.
Как учиться работе в GitHub
GitHub — самый популярный сервис для разработки проектов в команде и хранения портфолио собственных проектов. Научиться работе с Git и GitHub необходимо каждому разработчику. Вот несколько материалов, которые помогут новичкам в разработке освоить GitHub:
Освойте перспективную профессию с нуля за 14 месяцев.
Знакомство с GitHub
Вкратце, это платформа для разработчиков программного обеспечения, основанная на системе контроля версий Git.
Любой разработчик практически каждый день использует GitHub или другие инструменты, основанные на Git. GitHub нужен для размещения вашего кода или для совместной работы над кодом других людей. В этой статье описываются ключевые понятия GitHub и способы использования некоторых функций для улучшения рабочего процесса.
Теперь, когда вы знаете, что такое GitHub, вы можете спросить, почему следует пользоваться именно им?
Да и вообще, GitHub управляется частной компанией, которая получает прибыль от размещения кода людей. И почему нельзя использовать аналогичные платформы,такие как BitBucket или GitLab?
Помимо личных предпочтений и технических характеристик, есть одна важная причина: каждый использует GitHub, поэтому это отличная платформа для нетворкинга.
С развитием Git другие системы контроля версий потеряли свою популярность, потому что большинство пользователей стали использовать только Git. И не с проста. Разработчики GitHub приложили много усилий для того, чтобы он был удобен в использовании и удовлетворял все потребности программистов.
Поэтому сегодня, когда вы просматриваете какую-то библиотеку, вы в 99% случаев найдете ее на GitHub.
Помимо открытого исходного кода, многие разработчики также размещают частные репозитории на GitHub из-за удобства платформы.
Теперь давайте начнем с важных концепций Git, которые должен знать разработчик.
GitHub Issues предоставляют владельцам репозитория возможность организовывать, помечать и связывать вопросы с определенными этапами разработки.
Если создать задачу на проекте другого пользователя, она останется открытой до тех пор пока вы или кто-то другой не решит ее или владелец репозитория просто не закроет ее.
Бывает так, что ответы на ваши вопросы поступают немедленно. А бывает и такое, что задача висит месяцами в ожидании решения. За это время вы получите комментарии других разработчиков и в дальнейшем сможете вернуться к ней, чтобы что-то исправить или улучшить код.
Несколько лет назад логотип GitHub включал слоган “пишем код вместе”. Думаю, понятно, что это значит.
На GitHub вы можете подписаться на профиль интересующего разработчика или репозиторий. Для этого нужно просто кликнуть “follow” на странице пользователя или кликнуть “watch” на репозитории.
В обоих случаях активность будет отображаться на панели инструментов. Благодаря этому вы сможете отслеживать актуальную информацию.
Одной из отличительных особенностей GitHub является система звёзд. Чтобы выразить свой интерес к репозиторию, его нужно отметить звездой. Это можно сделать с помощью кнопки «Star». Это позволит вам отслеживать интересные проекты и находить похожие.
Это также один из самых важных рейтинговых механизмов, поскольку чем больше звезд имеет репозиторий, тем он популярнее. Поэтому в результатах поиска он будет в топовых местах. Крупные проекты могут иметь десятки тысяч звезд.
Также в GitHub есть трендовая страница, на которой представлены репозитории, которые получают наибольшее количество звезд за определенный период времени (за день, неделю, месяц).
Если вы хотите внести свой вклад в уже существующие проекты, в которых у нас нет прав на внесения изменений путем отправки (push) изменений, вы можете создать свое собственное ответвление (“fork”) проекта. Это означает, что GitHub создаст вашу собственную копию проекта, данная копия будет находиться в вашем репозитории и вы сможете легко делать изменения путем отправки (push) изменений. Также другой человек может разветвить ваш репозиторий, внести некоторые изменения, а затем создать запрос на внесение этих изменений.
Иногда человек, который создает новую ветку из вашего репозитория, может и не попросить вас замерджить что-либо. Это возможно, если ему понравился ваш код и он решил добавить что-то поверх него, но не хочет сливать обратно в исходный репозиторий. Благодаря этому он также может исправить ошибку, с которой столкнулся ранее.
В предыдущей части я уже говорил что такое Pull Request. Повторюсь, человек может создать свое собственное ответвление (“fork”) проекта, внести некоторые изменения и затем сделать Pull Request., чтобы вы замерджили эти изменения.
Чем популярнее проект, тем больше PR он будет иметь, как например, проект React:
Как только человек делает Pull Request, он рассматривается основными разработчиками проекта. В зависимости от количества и сложности изменений, которые вы внесли в код, разработчику может потребоваться разное количество времени, чтобы убедиться, что ваши изменения совместимы с проектом.
У проекта может быть четкий график изменений, которые разработчики хотят внедрить. Тогда ваши запросы на внесение изменений в код будут рассмотрены быстро.
Кроме обратной связи и новых знакомств, GitHub также предоставляет некоторые функции по управлению проектами.
Wiki предназначен для использования в качестве документации для пользователей.Одним из самых впечатляющих видов использования Wiki, которые я видел до сих пор, является язык программирования Go GitHub Wiki.
GitHub предлагает множество инструментов для работы с вашим кодом.
Что Такое GitHub И Для Чего Именно Он Нужен?
GitHub это система управления проектами и версиями кода, а также платформа социальных сетей, созданная для разработчиков. Но для чего используется GitHub? Ну, среди прочего, это позволяет вам работать совместно с другими людьми по всему миру, планировать свои проекты и отслеживать свою работу.
GitHub также является одним из крупнейших онлайн-хранилищ (англ) совместной работы по всему миру.
Что такое Git?
Прежде чем мы перейдём дальше, мы должны понять, что такое Git. Это как сердце GitHub. Git — это система контроля версий, разработанная Линусом Торвальдсом (человеком, создавшим Linux).
Что такое система контроля версий?
Когда разработчики создают новый проект, они всегда продолжают вносить обновления в код. Даже после запуска проектов им всё равно нужно обновлять версии, исправлять ошибки, добавлять новые функции и т. д.
Система контроля версий помогает отслеживать изменения, внесённые в базу кода. Более того, он записывает, кто внёс изменения и может восстановить стёртый или изменённый код.
Перезаписанных кодов не существует, поскольку Git сохраняет несколько копий в хранилище. Если вы заинтересованы в Git, вы можете узнать больше о Git здесь.
Что такое Hub?
Если Git — это сердце GitHub, то Hub — это его душа. Концентратор в GitHub — это то, что превращает командную строку, такую как Git, в крупнейшую социальную сеть для разработчиков.
Помимо участия в определённом проекте, GitHub позволяет пользователям общаться с единомышленниками. Вы можете следить за людьми и смотреть, что они делают или с кем они общаются.
Репозиторий
Репозиторий или хранилище — это каталог, в котором хранятся файлы вашего проекта. Он может быть расположен в хранилище GitHub или в локальном хранилище на вашем компьютере. Вы можете хранить файлы кодов, изображения, аудио или всё, что связано с проектом, в хранилище.
Ветка
Ветка это копия вашего репозитория. Вы можете использовать ветку, когда хотите сделать разработку изолированно.
Работа с веткой не повлияет на центральное хранилище или другие ветки. Если вы сделали эту работу, вы можете объединить свою ветку с другими ветками и центральным репозиторием, используя запрос на извлечение.
Запрос на извлечение
Запрос на извлечение означает, что вы сообщаете другим, что вы передали изменения, внесённые вами в ветке, в главный репозиторий. Соавторы хранилища могут принять или отклонить запрос на извлечение. После его открытия вы можете обсудить и проанализировать свою работу с соавторами.
Следуйте приведённым ниже инструкциям, чтобы создать запрос на извлечение в GitHub:
Форкинг репозитория
Форкинг репозитория означает, что вы создаёте новый проект на основе существующего репозитория. Говоря простым языком, разветвление репозитория означает, что вы копируете существующий репозиторий, вносите некоторые необходимые изменения, сохраняете новую версию в качестве нового репозитория и называете это своим собственным проектом.
Это отличная функция, которая ускоряет разработку проекта. Поскольку это совершенно новый проект, центральное хранилище не будет затронуто. Если «главный» репозиторий обновлён, вы также можете применить это обновление к вашему текущему форку.
Следуйте приведённым ниже инструкциям, чтобы создать репозиторий в GitHub:
GitHub не ограничен только для разработчиков
GitHub это отличная платформа, которая меняет работу разработчиков. Тем не менее каждый, кто хочет эффективно управлять своим проектом и работать совместно, также может узнать что такое GitHub и как им пользоваться.
Если ваша команда работает над проектом, который нуждается в постоянных обновлениях, и хочет отслеживать внесённые изменения, GitHub — именно то, что вам нужно. Есть и другие альтернативы, такие как GitLab, BitBucket, но лучше сначала разобраться, что такое GitHub и научиться ним пользоваться.
Знаете, что такое GitHub? Возможно, вы даже знаете, как пользоваться GitHub? Расскажите о вашем опыте в разделе комментариев.
Анна долгое время работала в сфере социальных сетей и меседжеров, но сейчас активно увлеклась созданием и сопровождением сайтов. Она любит узнавать что-то новое и постоянно находится в поиске новинок и обновлений, чтобы делиться ими с миром. Ещё Анна увлекается изучением иностранных языков. Сейчас её увлёк язык программирования!




























