Git — программа, которая запоминает каждое изменение в твоём коде. GitHub — сайт, где ты хранишь копию кода в интернете.
Представь: ты написала программу. Она работает. Ты решила добавить новую функцию, поменяла 10 строк — и всё сломалось. Ты не помнишь, какие строки были до этого. Код не работает, вернуться назад невозможно.
Git это предотвращает. Он работает как машина времени для кода: - Ты говоришь Git: "запомни код как он есть сейчас" (это называется коммит) - Через час ты что-то сломала → говоришь Git: "верни мне код каким он был час назад" - Git возвращает всё обратно
Аналогия: Ctrl+Z (отмена) в любом редакторе. Но Git помнит не последние 10 действий, а всю историю — хоть за год назад.
Git хранит историю на твоём компьютере. Но что если ноутбук сломается? Код потерян.
GitHub — это сайт (github.com), куда ты загружаешь копию своего кода. Теперь код лежит и у тебя, и в интернете.
Зачем это нужно:
Просто папка проекта, за которой Git следит. Ты говоришь Git "следи за этой папкой" — и он начинает запоминать все изменения внутри.
# Создать репозиторий = сказать Git "следи за этой папкой"
git init
# Появится скрытая папка .git — в ней Git хранит всю историю
Сохранённая версия кода. Ты нажимаешь "сохранить" — и Git запоминает, как выглядит весь код прямо сейчас.
Аналогия: Фото на телефоне. Каждое фото — момент времени. Ты можешь листать фотографии назад и видеть, как всё выглядело раньше. Коммит — это "фотография" кода в определённый момент. Ты можешь пролистать все коммиты и увидеть, как код менялся.
Допустим, у тебя работающий код. Ты хочешь попробовать добавить новую функцию, но боишься сломать то, что уже работает.
Ветка — это копия кода, в которой ты экспериментируешь. Оригинал не трогается.
Аналогия: Ты редактируешь фото в Instagram. Ты не рисуешь сразу на оригинале — приложение создаёт копию, ты накладываешь фильтры, крутишь яркость. Если нравится результат — сохраняешь. Если нет — нажимаешь "отменить" и оригинал в порядке.
Ветка в Git — то же самое: - Создала ветку → работаешь в копии - Получилось → объединяешь с оригиналом - Не получилось → удаляешь копию, оригинал не пострадал
mkdir my-project
cd my-project
git init
# → Initialized empty Git repository
# Git теперь следит за папкой my-project
touch app.py
Открой app.py и напиши:
print("Привет, мир!")
git status
# Git покажет:
# Untracked files: app.py
# "Untracked" = "я вижу этот файл, но пока не слежу за ним"
git add app.py
# Теперь файл в зоне подготовки — готов к сохранению
git status
# Changes to be committed: app.py
# "Готов к сохранению"
git commit -m "Первый коммит: добавила app.py"
# -m = message = сообщение с описанием "что я сделала"
# Версия сохранена. Git запомнил код как он есть сейчас.
git log --oneline
# → abc1234 Первый коммит: добавила app.py
# Показывает все сохранённые версии — от новых к старым
Это ты будешь делать каждый раз:
# 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 "Фикс"
my-project)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 лежит твой код
# Изменила код → добавила → сохранила → отправила
git add .
git commit -m "Добавила новую функцию"
git push
# Код обновился на GitHub
git diff
# Показывает разницу между текущим кодом и последним сохранением
# Строки с + — ты добавила
# Строки с - — ты удалила
Есть файлы, которые нельзя загружать на 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 # удаляем неудачный эксперимент
# Основной код не пострадал
# 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
Git перестанет видеть этот файл и не будет предлагать его сохранять.
Задача 3: Ты хочешь скачать проект OpenClaw с GitHub себе на компьютер. Какая команда?
git clone https://github.com/openclaw/openclaw.git
Задача 4: Что делают эти три команды по порядку?
git add .
git commit -m "Добавила авторизацию"
git push
Задача 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 из кода.