Перейти к содержанию

Git для домашних заданий

Зачем это нужно?

Git — это стандарт индустрии. Каждый разработчик в любой компании пользуется Git каждый день. Научиться сдавать ДЗ через Git = освоить инструмент, который пригодится в универе, стажировке и работе. Это не сложнее, чем отправить файл в облако — просто по-другому.


Что такое Git и зачем он нужен

Git — система контроля версий. Он запоминает каждое изменение в коде: кто, что и когда изменил. Можно вернуться к любой предыдущей версии.

GitHub — сайт, где хранятся репозитории (папки с кодом под управлением Git). Туда загружаешь свои решения.

В реальной разработке работа выглядит так:

main ──────────────────────────────────► (стабильная версия)
         │                    ▲
         ▼                    │
    feature/задача  ──► PR ──► merge

Мы будем делать то же самое: одна ветка = одно домашнее задание → преподаватель проверяет через Pull Request.


Установка Git

  1. Скачай установщик с git-scm.com/download/win
  2. Запусти .exe, везде нажимай Next (настройки по умолчанию подходят)
  3. Проверь установку — открой PowerShell или CMD:
git --version
# git version 2.44.0.windows.1
# Через Homebrew (рекомендуется)
brew install git

# Или через Xcode Command Line Tools
xcode-select --install
sudo apt install git       # Ubuntu/Debian
sudo dnf install git       # Fedora

Первоначальная настройка

Выполни один раз после установки:

git config --global user.name "Иванов Иван"
git config --global user.email "твой@email.com"

Зачем это нужно?

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


Создание репозитория для ДЗ

1. Создай репозиторий на GitHub

  1. Зайди на github.com → зарегистрируйся (если нет аккаунта)
  2. Нажми New repository (зелёная кнопка)
  3. Название: ege-homework (или любое другое)
  4. Поставь Private (только ты и преподаватель видят)
  5. Нажми Create repository

2. Склонируй репозиторий к себе

git clone https://github.com/ТВО_ИМЯ/ege-homework.git
cd ege-homework

3. Скопируй шаблон в репозиторий

Запусти скрипт-генератор прямо в папке репозитория:

python create_hw_template.py

Закоммить начальную структуру:

git add .
git commit -m "init: шаблон для 27 заданий"
git push

Рабочий процесс — сдача одного ДЗ

Шаг 1 — Создай ветку для задания

# Всегда создавай ветку от актуального main
git checkout main
git pull

# Новая ветка — название понятное
git checkout -b hw/n14-программирование

Соглашение об именовании веток

Используй формат hw/nXX-тема:

  • hw/n01-графы — задание 1
  • hw/n14-программирование — задание 14
  • hw/n27-pandas — задание 27

Шаг 2 — Реши задание

Открой нужную папку, напиши решение в solution.py, заполни README.md.

Шаг 3 — Зафиксируй изменения (коммит)

# Посмотри что изменилось
git status

# Добавь файлы задания
git add N14_основы_программирования/

# Создай коммит с понятным сообщением
git commit -m "hw(n14): решение задания на подсчёт делителей"

Как писать сообщения коммитов

Хорошо: hw(n14): решение задания на подсчёт делителей
Плохо: fix, 123, готово, задание

Шаг 4 — Отправь на GitHub

git push origin hw/n14-программирование

Шаг 5 — Создай Pull Request

  1. Зайди на свой репозиторий на GitHub
  2. Появится жёлтый баннер — нажми Compare & pull request
  3. Название PR: ДЗ: Задание 14 — программирование
  4. В описании напиши: что решал, что было сложно
  5. Нажми Create pull request

Готово! Преподаватель получит уведомление, проверит код прямо в PR и оставит комментарии к конкретным строкам.


Как выглядит проверка

Преподаватель видит твой код с подсветкой изменений:

+ count = sum(1 for x in numbers if x % 3 == 0)  ← добавил строку
- for i in range(len(numbers)):                    ← убрал старый код

Может оставить комментарий к любой строке:

Преподаватель: Хорошее решение! Но можно ещё короче: count = numbers.count(lambda x: x % 3 == 0) — как думаешь?

Ты отвечаешь прямо в комментарии, исправляешь код, пушишь ещё раз в ту же ветку — PR обновляется автоматически.


Шпаргалка по командам

Действие Команда
Посмотреть статус git status
Посмотреть изменения git diff
Создать ветку git checkout -b имя-ветки
Переключиться на ветку git checkout имя-ветки
Добавить файлы git add . или git add файл
Сохранить изменения git commit -m "сообщение"
Отправить на GitHub git push origin имя-ветки
Обновить с GitHub git pull
Список веток git branch
История коммитов git log --oneline

Частые вопросы

Нечаянно закоммитил в main, что делать?
# Отмени последний коммит, сохранив изменения
git reset HEAD~1

# Создай правильную ветку и закоммить туда
git checkout -b hw/n14-программирование
git add .
git commit -m "hw(n14): решение"
git push origin hw/n14-программирование
Как обновить ветку, если main изменился?
git checkout main
git pull
git checkout hw/n14-программирование
git rebase main
Репозиторий приватный — как дать доступ преподавателю?

GitHub → Settings → Collaborators → Add people → введи username преподавателя.


Итог

Через несколько ДЗ этот процесс станет автоматическим. А когда придёшь на стажировку или в команду — уже будешь знать, как работать с Git. Это один из самых ценных навыков, который можно получить ещё в школе.