Шпаргалка по Git

Основные команды Git для контроля версий - ветвление, коммиты, слияние и совместная работа.

Настройка и конфигурация

Настройте Git и задайте свою идентификацию

# Установите ваше имя и email
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

# Проверьте вашу конфигурацию
git config --list

# Установите имя ветки по умолчанию
git config --global init.defaultBranch main
Первоначальная настройка
# Установите редактор по умолчанию
git config --global core.editor "code --wait"

# Включите цветовой вывод
git config --global color.ui auto

# Настройте помощник учётных данных (Windows)
git config --global credential.helper wincred
Дополнительная конфигурация

Создание репозиториев

Инициализация или клонирование репозиториев Git

# Инициализировать новый репозиторий
git init

# Инициализировать с указанием имени ветки
git init -b main

# Клонировать существующий репозиторий
git clone https://github.com/user/repo.git

# Клонировать в указанный каталог
git clone https://github.com/user/repo.git my-folder
Инициализация репозитория

Базовый рабочий процесс

Общие команды для ежедневного использования Git

# Проверить статус репозитория
git status

# Добавить файлы в область подготовленных
git add file.txt
git add .                 # Добавить все файлы
git add *.js              # Добавить все файлы JavaScript

# Зафиксировать изменения
git commit -m "Commit message"
git commit -am "Message"  # Добавить и зафиксировать отслеживаемые файлы

# Просмотреть историю коммитов
git log
git log --oneline         # Сжатый вид
git log --graph           # Показать граф веток
Ежедневные команды

Ветвление и слияние

Создание и управление ветками

# Список веток
git branch                # Локальные ветки
git branch -a             # Все ветки (локальные + удалённые)

# Создать новую ветку
git branch feature-branch

# Переключиться на ветку
git checkout feature-branch
git switch feature-branch  # Современная альтернатива

# Создать и переключиться на новую ветку
git checkout -b feature-branch
git switch -c feature-branch
Управление ветками
# Слить ветку в текущую ветку
git merge feature-branch

# Удалить ветку
git branch -d feature-branch    # Безопасное удаление
git branch -D feature-branch    # Принудительное удаление

# Переименовать ветку
git branch -m old-name new-name
Слияние и очистка

Удалённые репозитории

Работа с удалёнными репозиториями

# Список удалённых репозиториев
git remote -v

# Добавить удалённый репозиторий
git remote add origin https://github.com/user/repo.git

# Получить изменения из удалённого репозитория
git fetch origin

# Слить изменения из удалённого репозитория
git pull origin main

# Отправить изменения в удалённый репозиторий
git push origin main
git push -u origin main   # Установить upstream и отправить
Операции с удалёнными репозиториями
# Удалить удалённый репозиторий
git remote remove origin

# Переименовать удалённый репозиторий
git remote rename old-name new-name

# Изменить URL удалённого репозитория
git remote set-url origin https://github.com/user/new-repo.git
Управление удалёнными репозиториями

Отмена изменений

Откат или сброс изменений

# Отбросить изменения в рабочем каталоге
git restore file.txt
git checkout -- file.txt  # Старый способ

# Снять файлы с индекса
git restore --staged file.txt
git reset HEAD file.txt   # Старый способ

# Изменить последний коммит
git commit --amend -m "New message"

# Откатить коммит (создаёт новый коммит)
git revert <commit-hash>
Операции отмены
# Сброс к предыдущему коммиту (будьте осторожны!)
git reset --soft HEAD~1   # Сохранить изменения в индексе
git reset --mixed HEAD~1  # Сохранить изменения без индекса
git reset --hard HEAD~1   # Отбросить все изменения

# Сброс к конкретному коммиту
git reset --hard <commit-hash>
Операции сброса

Отложенные изменения

Временное сохранение изменений

# Сохранить текущие изменения
git stash
git stash save "Work in progress"

# Список stash'ей
git stash list

# Применить stash           # Оставить stash
git stash apply           # Оставить stash
git stash pop             # Применить и удалить stash

# Применить конкретный stash
git stash apply stash@{0}

# Удалить stash
git stash drop stash@{0}
git stash clear           # Удалить все stash'и
Управление отложенными изменениями

Просмотр изменений

Исследование различий и истории

# Показать неиндексированные изменения
git diff

# Показать индексированные изменения
git diff --staged
git diff --cached

# Показать изменения между коммитами
git diff commit1 commit2

# Показать изменения в конкретном файле
git diff file.txt
Команды diff
# Показать детали коммита
git show <commit-hash>

# Показать файл в конкретном коммите
git show <commit-hash>:file.txt

# Показать, кто что изменил в файле
git blame file.txt
Команды инспекции

Теги

Создание и управление тегами версий

# Список тегов
git tag

# Создать лёгкий тег
git tag v1.0.0

# Создать аннотированный тег
git tag -a v1.0.0 -m "Version 1.0.0"

# Тегировать конкретный коммит
git tag -a v1.0.0 <commit-hash> -m "Message"

# Отправить теги в удалённый репозиторий
git push origin v1.0.0
git push origin --tags    # Отправить все теги

# Удалить тег
git tag -d v1.0.0
git push origin --delete v1.0.0
Операции с тегами

Полезные команды

Дополнительные полезные команды Git

# Очистить неотслеживаемые файлы
git clean -n              # Пробный запуск
git clean -f              # Удалить файлы
git clean -fd             # Удалить файлы и каталоги

# Поиск в репозитории
git grep "search term"

# Показать, кто внес изменения в файл
git log --follow file.txt

# Создать алиас
git config --global alias.st status
git config --global alias.co checkout
Полезные утилиты
# Игнорировать изменения файла
git update-index --assume-unchanged file.txt

# Снова отслеживать изменения файла
git update-index --no-assume-unchanged file.txt

# Показать отслеживаемые файлы
git ls-files
Отслеживание файлов
Шпаргалка по Git