Git GitHub

Git та GitHub для студентів: повний курс

10 лютого 2026 | 25 хв читання

Git version control
Git — система контролю версій, яку використовують 95% розробників
Наші проекти на GitHub: github.com/SKPdeveloper — переглядайте код!

У 2005 році Лінус Торвальдс (творець Linux) за 2 тижні написав Git, бо попередня система контролю версій BitKeeper стала платною. Сьогодні Git — індустріальний стандарт. Без нього неможливо уявити сучасну розробку. У цій статті — все, що потрібно знати студенту, від базових команд до CI/CD.

Що таке Git і чому він потрібен?

Git — це розподілена система контролю версій (Distributed Version Control System). Вона дозволяє:

  • Зберігати історію змін — кожен коміт — це "знімок" проекту
  • Працювати в команді — кілька людей можуть редагувати один проект
  • Експериментувати безпечно — гілки дозволяють тестувати ідеї без ризику
  • Відкатувати зміни — зламали щось? Повернулись до попередньої версії
Git ≠ GitHub

Git — програма для версіонування (працює локально). GitHub — хмарний сервіс для зберігання Git-репозиторіїв та співпраці. Альтернативи GitHub: GitLab, Bitbucket.

Встановлення та налаштування

# Встановлення (Linux)
sudo apt install git

# Встановлення (macOS)
brew install git

# Перевірка версії
git --version

# Налаштування (обов'язково!)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# Корисні налаштування
git config --global init.defaultBranch main
git config --global core.editor "code --wait"  # VS Code як редактор
git config --global pull.rebase false           # Merge при pull

# Перевірка налаштувань
git config --list

Базові команди: ваш щоденний набір

КомандаОписПриклад
git initІніціалізація нового репозиторіюgit init
git cloneКлонування існуючого репоgit clone https://github.com/user/repo.git
git statusСтатус робочої директоріїgit status
git addДодати файли до staginggit add . або git add file.py
git commitЗафіксувати зміниgit commit -m "Add login feature"
git pushВідправити на серверgit push origin main
git pullОтримати зміни з сервераgit pull origin main
git logІсторія комітівgit log --oneline
git diffПоказати зміниgit diff HEAD~1

Типовий робочий процес

# 1. Клонування проекту (один раз)
git clone https://github.com/username/project.git
cd project

# 2. Створення нової гілки для фічі
git checkout -b feature/login-page

# 3. Робота над кодом...
# ... пишемо код ...

# 4. Перегляд змін
git status
git diff

# 5. Додавання файлів до staging
git add src/components/Login.jsx
git add src/styles/login.css
# Або всі зміни:
git add .

# 6. Коміт
git commit -m "feat: Add login page component"

# 7. Push на GitHub
git push origin feature/login-page

# 8. Створити Pull Request на GitHub (через браузер)

# 9. Після merge — оновити main локально
git checkout main
git pull origin main

# 10. Видалити локальну гілку
git branch -d feature/login-page

Гілки (Branches): паралельні всесвіти

Git branches visualization
Гілки дозволяють працювати над кількома фічами паралельно
# Переглянути всі гілки
git branch          # локальні
git branch -a       # всі (включаючи remote)

# Створити нову гілку
git branch feature/new-feature

# Перейти на гілку
git checkout feature/new-feature

# Створити і перейти (скорочення)
git checkout -b feature/new-feature

# Сучасна альтернатива (Git 2.23+)
git switch feature/new-feature
git switch -c feature/new-feature  # create + switch

# Merge гілки в main
git checkout main
git merge feature/new-feature

# Видалити гілку
git branch -d feature/new-feature  # якщо merged
git branch -D feature/new-feature  # force delete
Конвенція іменування гілок
  • feature/ — нова функціональність
  • bugfix/ — виправлення багу
  • hotfix/ — терміновий фікс на production
  • release/ — підготовка релізу

Вирішення конфліктів

Конфлікт виникає, коли дві гілки змінили одні й ті ж рядки файлу.

# Спроба merge — виникає конфлікт
git merge feature/login
# Auto-merging src/App.js
# CONFLICT (content): Merge conflict in src/App.js

# Git позначає конфліктні місця:
# <<<<<<< HEAD
# Код з поточної гілки
# =======
# Код з гілки, яку мержимо
# >>>>>>> feature/login

# 1. Відкрити файл та вирішити конфлікт вручну
# 2. Видалити маркери <<<<<<<, =======, >>>>>>>
# 3. Залишити правильний код

# Після вирішення:
git add src/App.js
git commit -m "Resolve merge conflict in App.js"

Commit Messages: як писати правильно

Хороші commit messages — ознака професіонала. Вони допомагають зрозуміти історію проекту.

Conventional Commits
<type>(<scope>): <description>
  • feat: — нова функціональність
  • fix: — виправлення багу
  • docs: — документація
  • style: — форматування (не змінює логіку)
  • refactor: — рефакторинг
  • test: — тести
  • chore: — інше (build, deps)
# Погані коміти:
git commit -m "fix"
git commit -m "changes"
git commit -m "asdfasdf"
git commit -m "WIP"

# Хороші коміти:
git commit -m "feat(auth): Add Google OAuth login"
git commit -m "fix(api): Handle null response from server"
git commit -m "docs: Update README with setup instructions"
git commit -m "refactor(utils): Extract date formatting to helper"

.gitignore: що не комітити

# .gitignore для Python проекту
# Віртуальне середовище
venv/
env/
.venv/

# Кеш Python
__pycache__/
*.py[cod]
*$py.class
.pytest_cache/

# IDE
.idea/
.vscode/
*.swp

# Секрети (ВАЖЛИВО!)
.env
.env.local
*.pem
secrets.json

# Бази даних
*.db
*.sqlite3

# Логи
*.log
logs/

# Build артефакти
dist/
build/
*.egg-info/

# OS файли
.DS_Store
Thumbs.db

# Node (якщо є фронтенд)
node_modules/

GitHub: Pull Requests та Code Review

Pull Request (PR) — це запит на включення ваших змін до основної гілки. Це стандартний спосіб командної роботи.

Хороший PR
  • Маленький (до 400 рядків)
  • Один PR = одна задача
  • Описаний: що, чому, як тестувати
  • Має тести
  • Пройшов CI/CD
Поганий PR
  • 1000+ рядків змін
  • Кілька незв'язаних фіч
  • Пустий опис "changes"
  • Ламає існуючі тести
  • Конфлікти з main

Потрібна допомога з проектом?

Виконуємо курсові та дипломні з будь-яких технологій. Код на GitHub, чиста історія комітів, повна документація.

Переглянути всі послуги

GitHub Actions: автоматизація CI/CD

GitHub Actions дозволяє автоматично запускати тести, збірку та деплой при кожному push або PR.

# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v4

      - name: Setup Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Run linter
        run: |
          pip install flake8
          flake8 . --count --show-source --statistics

      - name: Run tests
        run: |
          pip install pytest pytest-cov
          pytest --cov=app --cov-report=xml

      - name: Upload coverage
        uses: codecov/codecov-action@v4
        with:
          file: ./coverage.xml

  deploy:
    needs: test
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'

    steps:
      - name: Deploy to server
        run: echo "Deploying to production..."

Корисні команди для просунутих

# Скасувати останній коміт (зберегти зміни)
git reset --soft HEAD~1

# Скасувати останній коміт (видалити зміни)
git reset --hard HEAD~1

# Змінити останній коміт (повідомлення або файли)
git commit --amend -m "New message"

# Stash — тимчасово сховати зміни
git stash
git stash list
git stash pop

# Cherry-pick — взяти один коміт з іншої гілки
git cherry-pick abc123

# Rebase — переписати історію
git rebase main
git rebase -i HEAD~3  # інтерактивний режим

# Пошук коміту з багом
git bisect start
git bisect bad       # поточна версія погана
git bisect good v1.0 # v1.0 була хороша
# Git знайде коміт бінарним пошуком

# Переглянути хто що написав
git blame file.py

# Красива історія
git log --oneline --graph --all

GitHub Student Developer Pack

Безкоштовні інструменти для студентів

GitHub надає студентам безкоштовний доступ до:

  • GitHub Pro (необмежені приватні репо)
  • GitHub Copilot
  • JetBrains IDEs
  • DigitalOcean кредити
  • Та багато іншого!

education.github.com/pack

Потрібна допомога з проектом?

Курсові з будь-яких технологій. Код на GitHub, чиста історія комітів. Без передоплати!

Замовити

Потрібна допомога з роботою?

Замовте професійне виконання — без передоплати, оплата після демонстрації!

Замовити лабораторну Практика з програмування