Пример 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"