💻 Примеры — Ветви в Git

К оглавлению урока

⚡ Основные сценарии

# 1. Создать ветку и переключиться
git checkout -b gitignore
# или (git 2.23+):
git switch -c gitignore

# 2. Работа с .gitignore
echo "*.log" > .gitignore
git add .gitignore
git commit -m "Add .gitignore"
git push origin gitignore

# 3. Spash-смена контекста
git stash
git checkout main
git stash pop

Пример 1. Создать ветку gitignore и запушить

Полный цикл — от инициализации до push ветки. Именно этот workflow используется в домашнем задании урока 16.

# Шаг 1: создать локальный репозиторий
mkdir git-branch
cd git-branch
git init

# Шаг 2: создать первый коммит (нужен хотя бы один коммит в main)
echo "# git-branch project" > README.md
git add README.md
git commit -m "Initial commit"

# Шаг 3: связать с удалённым репозиторием
git branch -M main
git remote add origin git@github.com:USERNAME/git-branch.git
git push -u origin main

# Шаг 4: создать ветку gitignore и переключиться
git checkout -b gitignore
Современный синтаксис (Git 2.23+): git switch -c gitignore
# Шаг 5: скачать пример .gitignore и закоммитить
curl -O https://raw.githubusercontent.com/aliaskov/bashscripts/master/.gitignore
git add .gitignore
git status            # проверить — должен быть staged .gitignore
git commit -m "Add .gitignore"

# Шаг 6: запушить ветку gitignore
git push origin gitignore

После этого на GitHub появится ветка gitignore с файлом .gitignore.

Пример 2. Работа с несколькими ветками

# Посмотреть все ветки
git branch

# Создать feature-ветку и переключиться
git checkout -b feature/login

# ... сделали изменения ...
git add .
git commit -m "Add login page"

# Вернуться на main
git checkout main

# Посмотреть все ветки (включая удалённые)
git branch -a

# Удалить ветку после слияния (безопасно)
git branch -d feature/login

Пример 3. Переключение на удалённую ветку

# Обновить список удалённых веток
git fetch --all

# Переключиться на удалённую ветку (современный Git)
git checkout feature/remote-branch

# Старый способ — создать локальную ветку на основе удалённой
git checkout -b feature/remote-branch origin/feature/remote-branch

Пример 4. Git stash — смена контекста без коммита

Ситуация: вы работаете в ветке feature, получили срочную задачу в main, но изменения ещё не готовы к коммиту.

# На ветке feature — есть незакоммиченные изменения
git status       # Modified: app.js

# Спрятать изменения
git stash

git status       # Working tree clean

# Переключиться на main, выполнить задачу
git checkout main
# ... выполнить срочные правки ...
git add .
git commit -m "Fix critical bug"

# Вернуться на feature и восстановить работу
git checkout feature
git stash pop    # вернуть спрятанные изменения
# Если несколько stash-ей в стеке:
git stash list
# stash@{0}: On feature: work in progress
# stash@{1}: On bugfix: some change

git stash apply stash@{1}    # применить конкретный stash (не удаляет)

Пример 5. Установка .gitignore — содержимое файла

# Содержимое .gitignore для Python-проекта
cat > .gitignore << 'EOF'
# Python
__pycache__/
*.py[cod]
*.pyo
*.pyd

# Virtual environment
venv/
.env/

# Logs
*.log

# System files
.DS_Store
Thumbs.db
EOF

git add .gitignore
git commit -m "Add .gitignore for Python project"