Оффтоп Digital Skynet
292

Знакомство с GitHub

В закладки

GitHub - это веб-сервис, на котором размещены миллиарды строк кода, и каждый день миллионы программистов со всего мира собираются вместе для совместной разработки IT проектов с открытым исходным кодом.

Вкратце, это платформа для разработчиков программного обеспечения, основанная на системе контроля версий Git.

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

Почему GitHub?

Теперь, когда вы знаете, что такое GitHub, вы можете спросить, почему следует пользоваться именно им?

Да и вообще, GitHub управляется частной компанией, которая получает прибыль от размещения кода людей. И почему нельзя использовать аналогичные платформы,такие как BitBucket или GitLab?

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

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

Поэтому сегодня, когда вы просматриваете какую-то библиотеку, вы в 99% случаев найдете ее на GitHub.

Помимо открытого исходного кода, многие разработчики также размещают частные репозитории на GitHub из-за удобства платформы.

Теперь давайте начнем с важных концепций Git, которые должен знать разработчик.

GitHub Issues

GitHub Issues - один из самых популярных трекеров ошибок в мире.

GitHub Issues предоставляют владельцам репозитория возможность организовывать, помечать и связывать вопросы с определенными этапами разработки.

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

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

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

Пишем код вместе

Несколько лет назад логотип GitHub включал слоган “пишем код вместе”. Думаю, понятно, что это значит.

Будь в теме

На GitHub вы можете подписаться на профиль интересующего разработчика или репозиторий. Для этого нужно просто кликнуть “follow” на странице пользователя или кликнуть “watch” на репозитории.

В обоих случаях активность будет отображаться на панели инструментов. Благодаря этому вы сможете отслеживать актуальную информацию.

Система “Звезд”

Одной из отличительных особенностей GitHub является система звёзд. Чтобы выразить свой интерес к репозиторию, его нужно отметить звездой. Это можно сделать с помощью кнопки «Star». Это позволит вам отслеживать интересные проекты и находить похожие.

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

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

Fork

Fork - это копия репозитория. Это то же самое, что branch в Git.

Если вы хотите внести свой вклад в уже существующие проекты, в которых у нас нет прав на внесения изменений путем отправки (push) изменений, вы можете создать свое собственное ответвление (“fork”) проекта. Это означает, что GitHub создаст вашу собственную копию проекта, данная копия будет находиться в вашем репозитории и вы сможете легко делать изменения путем отправки (push) изменений. Также другой человек может разветвить ваш репозиторий, внести некоторые изменения, а затем создать запрос на внесение этих изменений.

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

Популярный = лучший

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

Pull Request

В предыдущей части я уже говорил что такое Pull Request. Повторюсь, человек может создать свое собственное ответвление (“fork”) проекта, внести некоторые изменения и затем сделать Pull Request., чтобы вы замерджили эти изменения.

Чем популярнее проект, тем больше PR он будет иметь, как например, проект React:

Как только человек делает Pull Request, он рассматривается основными разработчиками проекта. В зависимости от количества и сложности изменений, которые вы внесли в код, разработчику может потребоваться разное количество времени, чтобы убедиться, что ваши изменения совместимы с проектом.

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

Но важно еще знать, что ваш запрос может и не быть рассмотрен вовсе. В приведенном выше примере в репозитории есть запрос, который был сделан 1,5 года назад. Так бывает практически во всех проектах - это вполне нормально.

Управление проектами

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

Одна из таких функций - Projects. Нововведение в GitHub. Она основывается на методологии Канбан, которая помогает эффективно организовать работу.

Wiki предназначен для использования в качестве документации для пользователей.Одним из самых впечатляющих видов использования Wiki, которые я видел до сих пор, является язык программирования Go GitHub Wiki.

Еще один популярный инструмент для управления проектами -вехи. Это часть страницы "issues ". Используя эту функцию, вы можете назначать контрольные точки проекта.

Тэги в Git - это указатель на конкретный коммит, и если он выполняется последовательно, он помогает вам вернуться к предыдущей версии вашего кода, не ссылаясь на конкретные коммиты.

Сравнение коммитов

GitHub предлагает множество инструментов для работы с вашим кодом.

Одна из самых важных вещей, которые вы можете сделать - сравнить одну ветку с другой. Или вы можете сравнить последний коммит с используемой вами версией, чтобы увидеть, какие изменения были внесены.

Подводя итог

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

Перевод статьи A developer’s introduction to GitHub от Digital Skynet :)

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Digital Skynet", "author_type": "self", "tags": [], "comments": 11, "likes": -6, "favorites": 12, "is_advertisement": false, "subsite_label": "flood", "id": 45035, "is_wide": false }
00
дни
00
часы
00
мин
00
сек
(function(){ var banner = document.querySelector('.teaserSberbank'); var isAdsDisabled = document.querySelector('noad'); if (!isAdsDisabled){ var countdownTimer = null; var timerItem = document.querySelectorAll('[data-sber-timer]'); var seconds = parseInt('15395' + '50799') - now(); function now(){ return Math.round(new Date().getTime()/1000.0); } function timer() { var days = Math.floor(seconds / 24 / 60 / 60); var hoursLeft = Math.floor((seconds) - (days * 86400)); var hours = Math.floor(hoursLeft / 3600); var minutesLeft = Math.floor((hoursLeft) - (hours * 3600)); var minutes = Math.floor(minutesLeft / 60); var remainingSeconds = seconds % 60; if (days < 10) days = '0' + days; if (hours < 10) hours = '0' + hours; if (minutes < 10) minutes = '0' + minutes; if (remainingSeconds < 10) remainingSeconds = '0' + remainingSeconds; if (seconds <= 0) { clearInterval(countdownTimer); } else { timerItem[0].textContent = days; timerItem[1].textContent = hours; timerItem[2].textContent = minutes; timerItem[3].textContent = remainingSeconds; seconds -= 1; } } timer(); countdownTimer = setInterval(timer, 1000); } else { banner.style.display = 'none'; } })();
{ "id": 45035, "author_id": 187179, "diff_limit": 1000, "urls": {"diff":"\/comments\/45035\/get","add":"\/comments\/45035\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/45035"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199791 }

11 комментариев 11 комм.

Популярные

По порядку

Написать комментарий...
8

спасибо за статью, но зачем?

Ответить
1

для тех, кто не знаком или давно хотел познакомиться.

Ответить
0

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

Ответить
0

начинающий разработчик - да. как будто разработчики рождаются умеющими пользоваться всеми инструментами для разработки.

Ответить
2

GitHub - это обмен файлами.
Это не только входящие,но и исходящие вызовы.
GitHub - это гигабайты свежей информации.
GitHub - Это общение.
GitHub - это рост.
GitHub - это свобода

Ответить
–3

github проприетарный, и принадлежит M$.
Переходим потихоньку на gitlab.

Ответить
3

Ну мелко-мягкие за последнее время изменили свой подход к опенсорсу и сообществу.
GitHub вообще никак не изменился за три месяца, и, по заверениям MS - не изменится.
Вопрос в другом... зачем эта статья здесь? ...хотя не хабр, и уже хорошо... :-D

Ответить
2

На хабре за такую статью автор отхватил бы сразу 100500 минусов

Ответить
1

И почему нельзя использовать аналогичные платформы,такие как BitBucket или GitLab?

Зато на битбакете можно приватные репы бесплатно делать.

Ответить
0

Как и на GitLab. + допольно мощный GitLab CI

Ответить
–1

Вам интернет подключили?)

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Хакеры смогли обойти двухфакторную
авторизацию с помощью уговоров
Подписаться на push-уведомления