13. (П6) Робота з локальним та віддаленим репозиторіями у GitHub¶
Мета роботи¶
Створити власний локальний Git-репозиторій, навчитися фіксувати зміни комітами та скасовувати їх, опублікувати репозиторій на GitHub і оформити запит на злиття (Pull Request) через окрему гілку.
Персоналізація обов'язкова
Репозиторій, коміти та вміст файлів мають містити ваші справжні дані: ім'я, прізвище, групу, ваші розв'язки попередніх практичних робіт. Коміти підписані чужою поштою, скопійовані репозиторії або посилання на чужий профіль GitHub не приймаються.
Підготовка¶
-
Git встановлений і налаштований — див. розділ «Встановлення та початкове налаштування Git» у лекції 12. Перевірте:
-
Створений акаунт на github.com з тією самою поштою, що вказана в
git config user.email. - Під рукою — ваші файли з практичних робіт 3, 4 і 5.
Ваші персональні дані¶
| Позначення | Звідки береться | Приклад |
|---|---|---|
<surname> |
ваше прізвище латиницею, малими літерами | petrenko |
<name> |
ваше ім'я латиницею | Ivan |
<group> |
ваша група | PZ-11 |
<login> |
ваш логін на GitHub | ivan-petrenko |
Назва репозиторію в усій роботі: python-practice-<surname> (наприклад, python-practice-petrenko).
graph LR
A["Завдання 1<br/>git init<br/>локальний репозиторій"] --> B["Завдання 2<br/>історія та<br/>скасування змін"]
B --> C["Завдання 3<br/>GitHub<br/>git push"]
C --> D["Завдання 4<br/>гілка<br/>та Pull Request"]
style A fill:#339af0,stroke:#333,color:#fff
style B fill:#ffd43b,stroke:#333,color:#000
style C fill:#ff922b,stroke:#333,color:#000
style D fill:#51cf66,stroke:#333,color:#000
Знімки екрана обов'язкові
Кожне завдання завершується виводом команди або сторінкою GitHub. Робіть знімок екрана одразу — відтворити стан репозиторію заднім числом складно.
Хід роботи¶
Завдання 1. Локальний репозиторій і перші коміти¶
-
Створіть каталог
python-practice-<surname>і перейдіть у нього. Не створюйте репозиторій у домашньому каталозі. -
Створіть файл
README.mdз такою структурою (замініть на власні дані): -
Виконайте
git statusі до першого коміту збережіть його вивід. Знайдіть у ньому словоUntracked. -
Зробіть перший коміт:
-
Створіть каталоги
practice3,practice4,practice5і скопіюйте в них свої розв'язки відповідних практичних робіт. -
Зафіксуйте їх трьома окремими комітами — по одному на практичну. Повідомлення англійською, у наказовому способі, наприклад:
-
Виведіть історію:
Очікуваний результат:
c47d2f8 (HEAD -> main) Add practice 5 functions
a91b7e4 Add practice 4 loop tasks
5d0c3b1 Add practice 3 solution
8f3a1c2 Add readme with student info
Питання: чому чотири коміти краще за один коміт Add all my work?
Завдання 2. Історія, .gitignore та скасування змін¶
- Запустіть будь-яку свою програму з каталогу
practice5— поряд з'явиться каталог__pycache__. Переконайтеся, щоgit statusйого бачить. -
Створіть у корені репозиторію файл
.gitignore: -
Виконайте
git statusще раз і збережіть вивід —__pycache__має зникнути зі списку. Закомітьте.gitignoreокремим комітомAdd gitignore for Python project. -
Скасування незакомічених змін. Відкрийте
README.md, зіпсуйте в ньому назву своєї групи, збережіть файл і подивіться, що змінилося:Збережіть вивід, потім поверніть файл у попередній стан однією командою
git restore README.mdі покажіть, щоgit statusзнову чистий. -
Виправлення останнього коміту. Додайте до
README.mdрядок зі своєю поштою та зробіть коміт із навмисно поганим повідомленнямfix. Потім виправте це повідомлення:Наведіть
git log --onelineдо і після виправлення. -
Скасування давнього коміту. Створіть файл
temp.txtз будь-яким текстом, закомітьте його (Add temporary file), а потім скасуйте цей коміт черезgit revert. Поясніть, чому післяrevertуgit logдва коміти, а не жодного, і чи існує файлtemp.txtпісля цього.
Питання: чим git restore відрізняється від git revert і коли який застосовують?
Завдання 3. Публікація на GitHub¶
-
Налаштуйте SSH-ключ (якщо ще не налаштований):
Скопіюйте публічний ключ і додайте його на GitHub: Settings → SSH and GPG keys → New SSH key.
-
Перевірте зв'язок і збережіть вивід:
-
На GitHub створіть публічний репозиторій
python-practice-<surname>. Файли README,.gitignoreта ліцензію при створенні не додавайте — вони у вас уже є локально. -
Прив'яжіть віддалений репозиторій і вивантажте свою роботу:
-
Відкрийте репозиторій у браузері й перевірте, що там є всі ваші коміти (вкладка Commits) і що
__pycache__відсутній. - Перевірка авторства. Відкрийте будь-який коміт на GitHub. Якщо поруч з іменем немає вашого аватара й посилання на профіль — пошта в
git config user.emailне збігається з поштою акаунта. Виправте налаштування, зробіть новий коміт і покажіть, що тепер авторство визначається правильно.
Питання: що станеться з віддаленим репозиторієм, якщо ви видалите каталог проєкту на своєму комп'ютері? А що станеться з локальним, якщо видалити репозиторій на GitHub?
Завдання 4. Гілка та запит на злиття у власному репозиторії¶
Тепер додамо нову можливість так, як це роблять у справжніх проєктах: не прямо в main, а через окрему гілку й Pull Request.
graph LR
M["main"] -->|"git switch -c add-about"| B["гілка add-about"]
B -->|"git commit"| C["коміт"]
C -->|"git push -u origin add-about"| GH["гілка на GitHub"]
GH -->|"Compare & pull request"| PR["Pull Request"]
PR -->|"Merge"| M2["main з новим кодом"]
style M fill:#339af0,stroke:#333,color:#fff
style B fill:#ffd43b,stroke:#333,color:#000
style C fill:#ffd43b,stroke:#333,color:#000
style GH fill:#ff922b,stroke:#333,color:#000
style PR fill:#845ef7,stroke:#333,color:#fff
style M2 fill:#51cf66,stroke:#333,color:#000
-
Створіть гілку й перейдіть до неї:
-
У гілці створіть файл
about.py, який друкує ваші дані. Програма має бути повноцінною й запускатися з порожнього файлу: -
Закомітьте файл (
Add personal information script) і вивантажте гілку: -
На GitHub натисніть Compare & pull request. У запиті вкажіть:
- заголовок англійською, що описує зміну, наприклад
Add personal information script; - опис: що додано, як запустити (
python3 about.py) і який очікуваний вивід.
- заголовок англійською, що описує зміну, наприклад
-
Відкрийте вкладку Files changed і зробіть знімок екрана — це те, що бачить рецензент.
- Доопрацювання за зауваженням. Не зливаючи запит, додайте в
about.pyще один рядок виводу (наприклад, кількість літер у вашому прізвищі), закомітьте та виконайтеgit push. Оновіть сторінку PR і покажіть, що там автоматично з'явився другий коміт. - Натисніть Merge pull request, потім Delete branch на GitHub.
-
Поверніться локально в
main, заберіть зміни й приберіть за собою:
Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub