Git та GitHub для студентів: повний курс
10 лютого 2026 | 25 хв читання
У 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 | Додати файли до staging | git 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 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/— терміновий фікс на productionrelease/— підготовка релізу
Вирішення конфліктів
Конфлікт виникає, коли дві гілки змінили одні й ті ж рядки файлу.
# Спроба 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) — це запит на включення ваших змін до основної гілки. Це стандартний спосіб командної роботи.
- Маленький (до 400 рядків)
- Один PR = одна задача
- Описаний: що, чому, як тестувати
- Має тести
- Пройшов CI/CD
- 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 кредити
- Та багато іншого!
Потрібна допомога з проектом?
Курсові з будь-яких технологій. Код на GitHub, чиста історія комітів. Без передоплати!
Замовити