← НАЗАД К КУРСУ Этап 1 · Урок 8 из 8

Урок 1.7 — Git и GitHub

Git — программа, которая запоминает каждое изменение в твоём коде. GitHub — сайт, где ты хранишь копию кода в интернете.


Зачем нужен Git

Представь: ты написала программу. Она работает. Ты решила добавить новую функцию, поменяла 10 строк — и всё сломалось. Ты не помнишь, какие строки были до этого. Код не работает, вернуться назад невозможно.

Git это предотвращает. Он работает как машина времени для кода: - Ты говоришь Git: "запомни код как он есть сейчас" (это называется коммит) - Через час ты что-то сломала → говоришь Git: "верни мне код каким он был час назад" - Git возвращает всё обратно

Аналогия: Ctrl+Z (отмена) в любом редакторе. Но Git помнит не последние 10 действий, а всю историю — хоть за год назад.


Зачем нужен GitHub

Git хранит историю на твоём компьютере. Но что если ноутбук сломается? Код потерян.

GitHub — это сайт (github.com), куда ты загружаешь копию своего кода. Теперь код лежит и у тебя, и в интернете.

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


Основные понятия

Репозиторий (repo)

Просто папка проекта, за которой Git следит. Ты говоришь Git "следи за этой папкой" — и он начинает запоминать все изменения внутри.

# Создать репозиторий = сказать Git "следи за этой папкой"
git init
# Появится скрытая папка .git — в ней Git хранит всю историю

Коммит (commit)

Сохранённая версия кода. Ты нажимаешь "сохранить" — и Git запоминает, как выглядит весь код прямо сейчас.

Аналогия: Фото на телефоне. Каждое фото — момент времени. Ты можешь листать фотографии назад и видеть, как всё выглядело раньше. Коммит — это "фотография" кода в определённый момент. Ты можешь пролистать все коммиты и увидеть, как код менялся.

Ветка (branch)

Допустим, у тебя работающий код. Ты хочешь попробовать добавить новую функцию, но боишься сломать то, что уже работает.

Ветка — это копия кода, в которой ты экспериментируешь. Оригинал не трогается.

Аналогия: Ты редактируешь фото в Instagram. Ты не рисуешь сразу на оригинале — приложение создаёт копию, ты накладываешь фильтры, крутишь яркость. Если нравится результат — сохраняешь. Если нет — нажимаешь "отменить" и оригинал в порядке.

Ветка в Git — то же самое: - Создала ветку → работаешь в копии - Получилось → объединяешь с оригиналом - Не получилось → удаляешь копию, оригинал не пострадал


Первый репозиторий — пошагово

1. Создаём проект и говорим Git следить за ним

mkdir my-project
cd my-project
git init
# → Initialized empty Git repository
# Git теперь следит за папкой my-project

2. Создаём файл

touch app.py

Открой app.py и напиши:

print("Привет, мир!")

3. Проверяем статус — что Git видит

git status
# Git покажет:
# Untracked files: app.py
# "Untracked" = "я вижу этот файл, но пока не слежу за ним"

4. Говорим Git: "следи за этим файлом"

git add app.py
# Теперь файл в зоне подготовки — готов к сохранению

git status
# Changes to be committed: app.py
# "Готов к сохранению"

5. Сохраняем версию (делаем коммит)

git commit -m "Первый коммит: добавила app.py"
# -m = message = сообщение с описанием "что я сделала"
# Версия сохранена. Git запомнил код как он есть сейчас.

6. Смотрим историю сохранений

git log --oneline
# → abc1234 Первый коммит: добавила app.py
# Показывает все сохранённые версии — от новых к старым

Цикл работы с Git

Это ты будешь делать каждый раз:

# 1. Написала или изменила код

# 2. Проверяешь что изменилось
git status

# 3. Добавляешь изменения в подготовку
git add app.py
# или добавить все изменённые файлы разом:
git add .

# 4. Сохраняешь версию с описанием
git commit -m "Описание что сделала"

Как часто сохранять? После каждого логичного шага. Добавила новую функцию — коммит. Исправила ошибку — коммит. Не жди конца дня.


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

Сообщение отвечает на вопрос "что я сделала":

# Понятно
git commit -m "Добавила отправку уведомлений"
git commit -m "Исправила ошибку в расчёте скидки"

# Непонятно — через неделю ты сама не вспомнишь что менялось
git commit -m "Изменения"
git commit -m "Фикс"

GitHub — загружаем код в интернет

1. Создай аккаунт на github.com

2. Создай новый репозиторий на сайте

3. Свяжи свой проект с GitHub

git remote add origin https://github.com/username/my-project.git
# Ты говоришь Git: "когда я попрошу отправить код в интернет — отправляй вот сюда"
# "origin" — стандартное имя для удалённого хранилища
# "remote" = удалённый (в интернете)

git branch -M main
# Называем основную ветку "main" (стандартное имя)

git push -u origin main
# push = "отправить" — код уходит на GitHub
# Теперь на github.com/username/my-project лежит твой код

4. Дальнейшая работа

# Изменила код → добавила → сохранила → отправила
git add .
git commit -m "Добавила новую функцию"
git push
# Код обновился на GitHub

git diff — посмотреть что изменилось

git diff
# Показывает разницу между текущим кодом и последним сохранением

# Строки с + — ты добавила
# Строки с - — ты удалила

.gitignore — что НЕ загружать в интернет

Есть файлы, которые нельзя загружать на GitHub. Например, .env с паролями. Если загрузишь — любой человек в интернете увидит твои ключи.

# Создай файл .gitignore в папке проекта
# Каждая строка — то, что Git должен игнорировать

.env                # твои пароли и API-ключи
__pycache__/        # временные файлы Python (создаются автоматически)
.venv/              # виртуальное окружение Python
node_modules/       # библиотеки JavaScript (тяжёлые, скачиваются заново)
.DS_Store           # служебный файл macOS (создаётся автоматически)

Клонирование — скачать чужой проект

Кто-то выложил проект на GitHub. Ты хочешь его себе:

git clone https://github.com/openclaw/openclaw.git
# clone = скачать весь проект со всей историей
# Появится папка openclaw/ — заходи и изучай

cd openclaw
ls

Ветки на практике

# Создать новую ветку (копию для экспериментов) и перейти в неё
git checkout -b experiment
# -b = создать новую ветку с именем "experiment"
# Теперь ты в копии. Основной код в безопасности.

# Делаешь изменения, сохраняешь...
git add .
git commit -m "Пробую новую фичу"

# Если получилось — объединяем с основным кодом
git checkout main          # возвращаемся к оригиналу
git merge experiment       # merge = объединить изменения из ветки

# Если не получилось — просто удаляем ветку
git checkout main          # возвращаемся к оригиналу
git branch -d experiment   # удаляем неудачный эксперимент
# Основной код не пострадал

Реальный сценарий: создание AI-проекта

# 1. Создаём проект
mkdir ai-bot
cd ai-bot
git init

# 2. Сразу создаём .gitignore чтобы не загрузить секреты
touch .gitignore
# Записываем в .gitignore:  .env

# 3. Создаём файлы
touch app.py requirements.txt .env

# 4. Первое сохранение
git add .
git commit -m "Создала проект"

# 5. Пишем код... сохраняем по шагам
git add app.py
git commit -m "Добавила подключение к Claude API"

# 6. Загружаем на GitHub
git remote add origin https://github.com/username/ai-bot.git
git push -u origin main

# Готово — код на GitHub, можно деплоить на сервер

Практика

# 1. Создай папку и инициализируй Git
mkdir git-practice
cd git-practice
git init

# 2. Создай файл hello.py с print("Hello!")
touch hello.py

# 3. Проверь статус
git status

# 4. Добавь и сохрани
git add hello.py
git commit -m "Добавила hello.py"

# 5. Измени файл — добавь ещё одну строку
# 6. Посмотри что изменилось
git diff

# 7. Добавь и сохрани
git add hello.py
git commit -m "Добавила второе сообщение"

# 8. Посмотри историю
git log --oneline

Задачки на закрепление

Задача 1: Ты изменила 3 файла. Как сохранить только app.py, а остальные пока не трогать?

Ответ
git add app.py
git commit -m "Обновила app.py"
`git add .` добавляет всё, а `git add app.py` — только один файл.

Задача 2: Ты случайно загрузила .env с паролями на GitHub. Как сделать так, чтобы это больше не повторилось?

Ответ Добавить `.env` в файл `.gitignore`:
.env
Git перестанет видеть этот файл и не будет предлагать его сохранять.

Задача 3: Ты хочешь скачать проект OpenClaw с GitHub себе на компьютер. Какая команда?

Ответ
git clone https://github.com/openclaw/openclaw.git

Задача 4: Что делают эти три команды по порядку?

git add .
git commit -m "Добавила авторизацию"
git push
Ответ 1. `git add .` — подготовить все изменённые файлы к сохранению 2. `git commit -m "..."` — сохранить версию кода с описанием 3. `git push` — отправить сохранённую версию на GitHub (в интернет)

Задача 5: Ты хочешь попробовать рискованное изменение, но боишься сломать работающий код. Что делать?

Ответ Создать ветку (копию для экспериментов):
git checkout -b experiment
Если получилось — `git checkout main` и `git merge experiment`. Если нет — `git checkout main` — оригинал не пострадал.

Глоссарий

Термин Что значит
Git Программа для отслеживания изменений в коде — как машина времени для проекта
GitHub Сайт-хранилище для Git-репозиториев, где можно делиться кодом и работать в команде
Репозиторий Папка проекта, в которой Git следит за всеми изменениями файлов
commit Сохранённая «версия» проекта с описанием — точка, к которой можно вернуться
push Команда для отправки локальных коммитов на GitHub (в облако)
pull Команда для скачивания свежих изменений с GitHub на свой компьютер
clone Команда для копирования чужого репозитория с GitHub к себе на компьютер
branch Ветка — параллельная копия проекта для экспериментов, не ломая основной код
merge Слияние — объединение изменений из одной ветки в другую
.gitignore Файл со списком того, что Git должен игнорировать (секреты, временные файлы)
README.md Файл-визитка проекта — описание, инструкция по запуску, примеры
git init Команда, которая превращает обычную папку в Git-репозиторий
git add Команда, которая добавляет изменённые файлы в «зону подготовки» перед коммитом
git status Команда, которая показывает текущее состояние репозитория — что изменено, что готово
git log Команда, которая показывает историю всех коммитов проекта

Главное

1. Git — система контроля версий: сохраняет историю изменений и позволяет откатиться.
2. GitHub — облачное хранилище для Git-репозиториев и платформа для совместной работы.
3. Основной цикл: git add → git commit → git push (подготовить → сохранить → отправить).
4. git status и git log — твои главные инструменты для понимания, что происходит в проекте.
5. Ветки (branch) — безопасный способ экспериментировать, не трогая рабочий код.
6. merge объединяет ветку с основной — если эксперимент удался.
7. clone копирует чужой проект, pull скачивает обновления — так работает командная разработка.
8. .gitignore — список файлов, которые Git не должен отслеживать (секреты, кэш, .env).
9. README.md — первое, что видят люди в твоём репозитории, пиши его понятно.

Что дальше?

Этап 1 завершён! Ты знаешь: терминал, файлы, Python (переменные, условия, циклы, функции, работа с файлами), Git и GitHub.

Дальше — Этап 2: Понимание AI. Узнаешь, как работают языковые модели, что такое API, и отправишь свой первый запрос к Claude из кода.

← ПРЕДЫДУЩИЙ СЛЕДУЮЩИЙ →