Що таке GitHub, навіщо потрібен і як користуватись ГітХаб, як почати використання сервісу – посібник для початківців.
GitHub – один із найпопулярніших сервісів, призначених для розміщення репозиторіїв із відкритим вихідним кодом. Сайт дозволяє публікувати проекти користувача і відстежувати зміни, внесені в кожну ітерацію. Інші користувачі GitHub можуть переглянути код користувача та запропонувати власні зміни. Це визначення дає лише коротке розуміння. Однак функціонал сервісу цим не обмежується. У цій оглядовій статті розглянемо Github докладніше.
- Що таке GitHub і як почати користуватися – посібник для початківців
- Git і GitHub – у чому різниця, перше знайомство з Гіт та ГітХаб
- Що таке Git?
- Що таке GitHub?
- У чому головна відмінність?
- Цікаві факти про Github
- Можливості Github
- Як працює GitHub, функції
- Розгалуження (forking)
- Запити на вилучення (pull request)
- Об’єднання (merging)
- Гайд – як розпочати роботу в Github з нуля
- Крок 0. Встановлення Git та створення облікового запису на GitHub
- Крок 1. Запуск Git та створення першого локального репозиторію
- Крок 2. Створення нового файлу у репозиторії
- Крок 3. Додавання файлу до проміжного середовища для відстеження
- Крок 4. Створення commit
- Крок 5. Створення нової гілки new branch
- Крок 6. Створення нового репозиторію на GitHub
- Крок 7: Надсилання гілки проекту на GitHub
- Додатково
- Крок 8. Створення першого “pull request”
- Крок 9. Поєднання pull request
- Крок 10. Скасування змін Github на локальному комп’ютері
- Додаткові можливості Github та Git
- Клонування репозиторію на локальний комп’ютер
- Пошук віддалених репозиторіїв
- Десктопна версія гітхабу – що це GitHub Desktop, основний функціонал, можливості та процес установки
- Як встановити
- Основний функціонал
- Github API
- Управління та налаштування проектів Github Desktop
- Створення, додавання та клонування репозиторію
- Створення New Branch
- Безпека
- Налаштування політики безпеки
- Управління графіком залежностей
- Ліцензії
Що таке GitHub і як почати користуватися – посібник для початківців
GitHub – інтернет-портал, в якому розробники та програмісти можуть завантажувати створений ними код та спільно працювати над його покращенням. Відмінною особливістю GitHub є надійна система контролю версій. Контроль версій дозволяє програмістам налаштовувати програмне забезпечення без шкоди для самого програмного забезпечення. Пропоновані зміни можуть бути легко об’єднані у повноцінний реліз, але тільки після того, як усі зміни будуть розглянуті та схвалені.
Git і GitHub – у чому різниця, перше знайомство з Гіт та ГітХаб
Що таке Git?
Відповідь: Швидка та масштабована система контролю версій . Git – це безкоштовна розподілена система контролю версій з відкритим вихідним кодом, призначена для швидкої та ефективної роботи з будь-якими проектами, від невеликих до великих.
Що таке GitHub?
Відповідь: потужний хмарний сервіс для управління приватними розробками та проектами з відкритим кодом.
У чому головна відмінність?
Git є повноцінним програмним забезпеченням у категорії «Система контролю версій», яке встановлюється на персональний комп’ютер користувача. Git дозволяє через командний рядок (Microsoft PowerShell) вносити зміни до коду, а GitHub надає можливість зберігати проекти у публічному доступі.
Цікаві факти про Github
- Максимальна кількість користувачів на сайті минулого року (за статистичними даними 24 липня 2021 року) становила 45 мільйонів людей.
- У 2018 році Microsoft придбала GitHub за 7,5 мільярда доларів.
- На Github є репозиторій git із відкритим вихідним кодом. Будь-хто може внести в нього зміни. Проект доступний за посиланням – https://github.com/git/git?ref=stackshare
Можливості Github
- Можливість інтеграції з найбільш популярними платформами та сервісами – Amazon, Google Cloud та Code Climate.
- Підтримка понад 200 мов програмування.
- Високий рівень консолідації та «цехової солідарності». Коли користувач розміщує свій проект на GitHub, інші представники спільноти програмістів можуть завантажити та оцінити роботу, якість коду та ступінь його опрацьованості. Сторонні користувачі можуть попередити власника проекту про можливі проблеми, конфлікти змінних тощо.
Як працює GitHub, функції
З найважливіших функцій Github можна назвати три – розгалуження, запити вилучення і об’єднання. Варто розглянути кожну функцію окремо.
Розгалуження (forking)
Розгалуження проекту створює копію (fork), яка дозволяє користувачеві вільно експериментувати, не впливаючи на вихідний проект. Створення форків та запитів на вилучення: https://youtu.be/nT8KGYVurIU
Запити на вилучення (pull request)
Pull request публікується розробником після того, як він закінчить роботу над виправленням/зміною коду. При цьому сам власник проекту може переглянути внесені зміни та поставити будь-які додаткові запитання.
Об’єднання (merging)
Після того, як власник схвалить pull request, він об’єднує запит на вилучення та застосовує зміни із розгалуженого проекту до вихідного коду.
Гайд – як розпочати роботу в Github з нуля
Даний гайд чудово підійде всім новачкам, які тільки починають вивчати Git та Github. Нижченаведені кроки допоможуть побудувати оптимальну систему роботи з цим програмним забезпеченням. Ви навчитеся вносити зміни до кодової бази, відкривати запит на вилучення (створювати pull request) та об’єднувати код у основну гілку. Отже, почнемо.
Крок 0. Встановлення Git та створення облікового запису на GitHub
- Перейдіть на офіційний веб-сайт Git: https://git-scm.com/downloads
- Натисніть посилання для завантаження настільної версії Git для Windows і дочекайтеся закінчення завантаження.
- Вийміть та запустіть інсталятор Git подвійним кліком у файлі Git.exe.
- Дозволіть застосунку вносити зміни до ПК шляхом натискання кнопки «Так» у діалоговому вікні «Керування обліковими записами користувачів».
- Запустіть процес встановлення Git. Ознайомтеся з основним документом «Публічна ліцензія GNU» та натисніть кнопку «Далі».
- Вкажіть місце для встановлення програми або залиште значення за замовчуванням. Програма запропонує створити папку меню “Пуск”. Пропустіть цей пункт.
- Виберіть текстовий редактор, який ви хочете використовувати разом із Git. У вікні, що випадає, необхідно вибрати Notepad++ (або будь-який інший текстовий редактор, з яким раніше працювали) і натиснути «Далі».
- Вкажіть назву для нової гілки проекту. Значення за замовчуванням – master. Рекомендується залишити цей параметр за промовчанням.
- У параметрах можливостей вибору PATH, SSH-клієнта, сертифікатів сервера, закінчення рядків та терміналу залиште все як є та натисніть кнопку «Далі».
- Залишіть усі параметри за замовчуванням і почніть інсталяцію програми.
- Після завершення встановлення позначте прапорці для перегляду приміток до випуску та запустіть Git Bash. Закрийте вікно інсталятора.
Зареєструвати обліковий запис на Github можна за наступним посиланням: https://github.com/join. Для цього необхідно ввести основні реєстраційні дані, необхідні надалі для підтвердження облікового запису.
Крок 1. Запуск Git та створення першого локального репозиторію
Git має два режими використання – bash (Git Bash) та графічний інтерфейс користувача (Git GUI). Щоб запустити Git Bash, відкрийте меню “Пуск” – “Windows”, введіть git bash і натисніть Enter (або двічі клацніть лівою кнопкою миші на ярлик програми). Для запуску Git GUI, відкрийте меню “Пуск” – “Windows”, введіть git gui та натисніть Enter. У нашому випадку ми використовуватимемо Git Bash.
Створення нового проекту у програмі Git Bash передбачає використання спеціальних команд для ініціалізації нового репозиторію. Для початку необхідно відкрити термінал Bash, натиснувши клавішу правою кнопкою миші на робочому столі, а потім у меню Git Bash Here. У вікні терміналу на локальному комп’ютері створіть новий тестовий каталог (папку), ввівши таке:
getrekt:Desktop getrekt $ cd ~/Desktop
getrekt:Desktop getrekt $ mkdir myproject
getrekt:Desktop getrekt $ cd myproject/
Команда mkdir створює нову папку локального проекту. Створюємо наш перший Github репозиторій: https://youtu.be/yHCUc6cmhcc
Крок 2. Створення нового файлу у репозиторії
У папці з проектом додайте новий текстовий файл за допомогою команди touch. Стандартно команда створить порожній текстовий файл, який матиме розширення .txt.
Увага! Git зберігає зміни/керує змінами лише у файлах, які він відстежує. Після створення нового файлу, користувач може відстежити його статус за допомогою команди git status. Консоль видасть список файлів, які є у репозиторії.
Як тільки ви додасте файл до папки, що містить репозиторій git, програма помітить зміну всередині проекту. Однак автоматичне відстеження не буде увімкнено, необхідно використовувати для цього спеціальну команду – git add.
getrekt:myproject getrekt $ touch getrekt.txt
getrekt:myproject getrekt $ ls
getrekt.txt
Крок 3. Додавання файлу до проміжного середовища для відстеження
Додайте файл у проміжне середовище за допомогою команди git add.
getrekt:myproject git add. За допомогою цієї команди програма запустить автоматичне відстеження всіх файлів, створених у папці проекту. Перевірити працездатність команди можна за допомогою git status. Ось так виглядають логи в командному рядку Git Bash після введення команди git status:
getrekt : getrekt getrekt
$
git status New filename: getrekt.txt new file: getrekt.txt Коментар до логів: файл ще не був доданий до комміту, але ось-ось буде доданий.
Крок 4. Створення commit
Commit – контрольна точка будь-якого репозиторію. Простіше кажучи, – пакет змін, що зберігає інформацію про додані, відредаговані або віддалені файли, в яких зберігається певний код.
getrekt:myproject getrekt $ git commit -m “МІЙ ПЕРШИЙ КОМІТ, Хлопці!”
[master (root-commit) b345d9a] МІЙ ПЕРШИЙ КОМІТ!
1 file changed, 1 insertion(+)
create mode 100644 getrekt.txt
Команда створення commit – git commit –m «Назва комміта».
Увага! Повідомлення наприкінці команди має бути осмислене та зрозуміле іншим розробникам проекту. Не називайте ваші комміти на кшталт “asdfadsf” або “foobar”. В іншому випадку ніхто нічого не зрозуміє, і вам доведеться витрачати купу часу на їхнє видалення.
Крок 5. Створення нової гілки new branch
New branch – це повноцінна гілка проекту, що складається з цілої сукупності коммітів. Є окремим релізом продукту, але в рамках системи контролю версій. Гілки дозволяють користувачеві переміщатися між станами проекту.
В офіційній документації git, представлений опис branches: “Branch в Git і Github – рухливий покажчик на один із коммітів репозиторію”.
Наприклад, якщо користувач захотів додати нову сторінку на свій веб-сайт, він зможе створити нову гілку (branch) тільки для цієї конкретної сторінки, не торкаючись основної частини проекту. Як тільки закінчить з нею, то зможе об’єднати зміни зі своєї гілки до основної. У разі створення нової гілки, Git відслідковує те, від якого комміту відбулося розгалуження.
Після виконання команди ви можете прописати в консолі git branch, щоб підтвердити створення гілки:
getrekt:myproject getrekt $ git branch
master
* my-new-branch Назва my-new-branch із зірочкою вказує, в якій гілки знаходиться користувач в даний момент часу.
Примітка: За замовчуванням найперша гілка кожного репозиторію git називається “master” (і зазвичай використовується як основна в проекті). В рамках боротьби з расизмом деякі розробники стали використовувати альтернативні назви для стандартної гілки, наприклад, «primary». Однак, найчастіше користувачі можуть побачити “master” або схожі назви, що використовуються для позначення.
Варто мати на увазі, що майже в кожному репозиторії є основна гілка, яку можна розглядати як офіційну версію проекту. Якщо це веб-сайт, то гілка – це версія, яку бачать користувачі. Якщо ця програма, то основною гілкою є реліз, який встановлюють користувачі на комп’ютер або мобільний пристрій. Саме так працює традиційна обробка версій продуктів Git та Github. На офіційному сайті є більш детальна документація щодо використання різних імен гілок за замовчуванням. Інформація доступна на Github за посиланням https://github.com/github/renaming
У разі повернення в гілку проекту та створення кількох коммітів новий branch не відстежуватиметься системою контролю версій, доки користувач не пропише автоматичне відстеження.
Крок 6. Створення нового репозиторію на GitHub
Цей крок не потрібно виконувати, якщо ви хочете відстежувати свій код лише локально. Але якщо ви працюєте в команді та приймаєте зміни від інших програмістів, то можете використовувати поточні можливості GitHub для спільної зміни коду проекту. Щоб створити новий репозиторій на GitHub, необхідно авторизуватись у системі та перейти на головну сторінку сайту. У головному меню натисніть на кнопку «New Repository», який знаходиться під знаком «+» поруч із фотографією профілю у правому верхньому куті панелі навігації: Після натискання на кнопку GitHub попросить власника проекту дати назву репозиторію та надати короткий опис:
Натисніть кнопку «Create repository», щоб підтвердити створення нового проекту. З’явиться діалогове вікно, в якому користувача запитають про те, чи хоче він створити репозиторій з нуля, або додати вже існуючий, створений локально. У другому випадку необхідно завантажити папку проекту на Github.
Увага! Завантаження локального репозиторію може відбуватися і з використанням командного рядка, а конкретніше за команд git remote add origin github_url (створює запис про нове підключення до віддаленого репозиторію), git push -u origin master (встановлює зв’язок між тією гілкою, в якій знаходиться розробник і гілкою master на віддаленому сервері).
Ось так виглядають логи в командному рядку Git Bash:
getrekt:myproject getrekt $ git remote add origin https://github.com/cubeton/mynewrepository.git
getrekt:myproject getrekt $ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 263 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/cubeton/mynewrepository.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
Крок 7: Надсилання гілки проекту на GitHub
Нова гілка проекту та репозиторій були створені. Залишилося «запушити» гілку та перенести у новий репозиторій Github. Так сторонні учасники спільноти зможуть бачити код та вносити зміни. У разі схвалення доопрацювань власник проекту може поєднати зміни з основною версією проекту. Щоб перенести зміни в нову гілку GitHub, в командному рядку необхідно ввести команду git push. GitHub автоматично створить гілку у віддаленому репозиторії:
getrekt:myproject getrekt$ git push origin my-new-branch
Counting objects: 3, done.
Delta compression using up до 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 313 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/cubeton/mynewrepository.git
* [new branch] my-new-branch -> my-new-branch Після оновлення сторінки GitHub, користувач побачить нову гілку, яка була поміщена в репозиторій.
Додатково
Що означає слово origin у команді git push origin? Коли користувач клонує віддалений репозиторій на свій локальний комп’ютер, git створює для нього майже завжди стандартний псевдонім «origin», який по суті є скороченням URL адреси віддаленого репозиторію. Відправка проекту на GitHub: https://youtu.be/zM6z57OtR2Q
Крок 8. Створення першого “pull request”
Запит на вилучення (або pull request) – це спосіб попередити власників репозиторію про те, що розробник хоче внести деякі зміни до коду. Так виглядає сторінка з додаванням pull request:
Ось так виглядає інтерфейс розділу після створення pull request:
Крок 9. Поєднання pull request
Зелена кнопка “Merge pull request” внизу створює запит на злиття. Після її натискання внесені зміни додаються в основну гілку проекту.
Увага! Після злиття видаліть гілку. Їхня велика кількість може призвести до безладдя в проекті. Для видалення гілки натисніть сіру кнопку Delete branch у правому нижньому кутку.
Щоб перевірити поточний статус коммітів, натисніть посилання «Commits» на першій сторінці репозиторію. Після натискання виведеться весь список коммітів у цій гілці. На скріншоті показаний саме той, який було створено щойно.
З правого боку вказано хеш-код кожного commit. Хеш-код – це унікальний ідентифікатор, який може бути використаний при підключенні API та сторонніх сервісів. Також за ідентифікаційним номером можна посилатися на конкретний коміт у командному рядку настільної версії Git Bash.
Крок 10. Скасування змін Github на локальному комп’ютері
На даний момент репозиторій у системі Github виглядає трохи інакше, ніж у користувача на локальному комп’ютері. Наприклад, коміт, який користувач зробив у своїй гілці та об’єднав у основну, не існує на локальному комп’ютері. Для автоматичної синхронізації різних версій проекту необхідно використовувати команду git pull origin master (під час роботи з основною гілкою) або git pull.
getrekt:myproject getrekt $ git pull origin master
remote: Counting objects: 1, done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Від https://github.com/cubeton/mynewrepository
* branch master -> FETCH_HEAD
23242..232433berer3444 master -> origin/master
master txt | 1 +
1 файл changed, 1 insertion(+)Щоб перевірити поточний статус виконання команди, пропишіть у командному рядку git log. Вона виведе список усіх комітів.
getrekt:myproject getrekt $ git log
commit 32dgt472hf74yh7734hf747fh373hde7r3heduer73hfhf
Merge: 3fg4dd 34fg3u7j7
Author: Mtdes Ethan < getrekt@yandex.ru>
Date: Fri Sep 11 17:48:11 2015 -0400
Merge branch ‘master’ of https://github.com /cubeton/mynewrepository
commit 44hgfh7f74hdu9jt93hf9ifejffe
Author: Mtdes Ethan < getrekt@yandex.ru>
Date: Fri Jan 07 17:48:00 2021 -02356
commit 46thf9496hf9485hkf857tg9hfj8rh4j
Merge: 33fh5d 3689gfh
Author: Mtdes Ethan < getrekt@yandex.ru>
Date: Fri Jan 07 17:51:00 2021 -02356
commit 46thf9496hf9485hkf857tg9hfj8rh4j
Merge: 33fh5d 3689gfh
Author: Mtdes Ethan < getrekt@yandex.ru>
Date: Fri Jan 07 17:55:00 2021 -02356
Added some more text to my file
commit 355904-43hg940fg959hfg0g95jjgdgdfgf57i86f
Merge: 343fggdd 53efhgffddg
Author: Mtdes Ethan < getrekt@yandex.ru>
Date: Fri Jan 07 17:58:00 2021 -02356
This is my first commit! Готово! Тепер користувач знайомий з усіма видами роботи у системі контролю версій. Git та GitHub курс навчання для новачків, як встановити Git та почати працювати з Github, гілки, репозиторії, комміти та інші поняття в практичних заняттях з ГітХаб: https://youtu.be/zZBiln_2FhM
Додаткові можливості Github та Git
Розглянемо інші корисні фішки, які дозволять розробнику спростити роботу над контролем версій.
Клонування репозиторію на локальний комп’ютер
Перейдіть до свого репозиторію на GitHub. У верхньому правому куті над списком файлів відкрийте меню «Clone or download». Скопіюйте URL-адресу для клонування за протоколом HTTPS.
Поверніться до вікна Git Bash і введіть команду:
git clone repository_url
repository_url – це посилання поточного проекту, який необхідно клонувати. Разом з ним вставляється url репозиторія.
У наведеному прикладі команда клонує репозиторій протоколу HTTPS. Інший варіант – клонування за допомогою URL-адрес по SSH-ключах. Для цього необхідно згенерувати пару SSH-ключів на Windows та призначити відкритий ключ облікового запису GitHub.
Пошук віддалених репозиторіїв
Після клонування в робочому каталозі на комп’ютері має з’явитись копія репозиторію з GitHub. Проект повинен містити каталог з назвою та основні файли. Для того, щоб перейти в нього, необхідно написати наступну команду:
cd git_project
Примітка: Замініть git_project фактичним ім’ям завантаженого репозиторію або вкажіть вміст поточного каталогу за допомогою команди ls. Другий спосіб використовується у тих випадках, коли користувач не може згадати назву проекту.
Десктопна версія гітхабу – що це GitHub Desktop, основний функціонал, можливості та процес установки
GitHub Desktop – це настільна програма, яка забезпечує взаємодію з GitHub на основі графічного інтерфейсу. На відміну від Git десктопна версія GitHub дозволяє виконувати ті ж команди за допомогою інтерфейсу користувача шляхом натискання кнопок, що помітно спрощує роботу з репозиторіями.
Як встановити
- Перейти за посиланням – https://desktop.github.com/
- Почати скачування інсталяційного пакета програми.
- Двічі клацнути на іконку завантаженого файлу та розпочати встановлення Github Desktop.
- Запустити програму через меню “Пуск”.
- Увійти в систему GitHub, використовуючи дані облікового запису користувача.
Основний функціонал
- Створення, додавання та клонування репозиторіїв.
- Використання програми для керування вкладками проектів.
- Внесення змін у гілку.
- Створення issues, pull request і коммітів.
- Можливість отримання доступу до ранніх версій нових продуктів.
Github API
Github REST API – інтерфейс, який надає розробникам доступ до даних, проектів та репозиторій Github, а також дозволяє надсилати серверні запити. За посиланням https://api.github.com/ знаходяться всі URL-адреси, на які можна надсилати найпростіші GET-запити:
Найчастіше розробники створюють реклами програмною мовою Python у форматі JSON. Спочатку необхідно отримати основну інформацію про репозиторію за посиланням – https://api.github.com/user/repos. Основна інформація вписується в конфігураційний файл у форматі JSON. У ньому знаходяться основні параметри користувача – аватар, читачі, кількість репозиторіїв, завантажень і т.д. Ці дані передаються на сервер.
Управління та налаштування проектів Github Desktop
Після встановлення, реєстрації облікового запису та налаштування програми, користувач може почати використовувати програму GitHub.
Створення, додавання та клонування репозиторію
Для створення нового репозиторію необхідно вибрати “Файл” та натиснути кнопку “Створити сховище”. Для додавання локального проекту необхідно вибрати меню “Файл” і натиснути кнопку “Додати локальний репозиторій”. Для клонування необхідно вибрати меню “Файл” – “Клонувати репозиторій”.
Створення New Branch
Щоб створити окрему гілку проекту, відкрийте розділ Current Branch і натисніть кнопку New Branch. Користувач зможе побачити гілку в інтерфейсі GitHub та зробити pull request, щоб відслідковувати зміни.
Безпека
Настільна та веб-версія Github дозволяє провести налаштування та підвищити рівень безпеки облікового запису користувача. Весь функціонал доступний у розділі «Параметри безпеки для сховища». Варто розглянути докладніше.
Налаштування політики безпеки
На головній сторінці репозиторію натисніть:
- “Security” – “Security Policy” – “Start Setup”.
- Додайте інформацію про підтримувані версії вашого проекту і про те, як повідомляти про можливі вразливості.
Управління графіком залежностей
Графік залежностей автоматично створюється всім загальнодоступних репозиторіїв, але для приватних такої функції не передбачено. Графік ідентифікує всі вихідні потоки залежностей і дозволяє визначити вразливість у проекті. Щоб встановити графік залежностей, натисніть на «Налаштування» – «Безпека та аналіз». Напроти графіка натисніть «Увімкнути» або «Вимкнути».
Ліцензії
Github ліцензування передбачає використання двох основних видів
ліцензії :
- GPL — це вид ліцензії, який дозволяє іншим користувачам використовувати чужу роботу в інших проектах з відкритим вихідним кодом. Проте, комерційні компанії не можуть цього робити.
- LGPL/Commons/MIT/Apache тощо – користувач віддає свій код для безкоштовного використання. Інші можуть заробляти на цьому гроші.