Шпаргалка git для разработчика

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

# Установка имени и email
git config --global user.name "Ваше Имя"
git config --global user.email "ваш@email.com"

# Сохранение учётных данных
git config --global credential.helper store

# Просмотр конфигурации
git config --list

🆕 Создание и клонирование

# Создать новый локальный репозиторий
git init

# Клонировать удалённый репозиторий
git clone <url-репозитория>
git clone <url> <название-папки>  # с указанием имени папки

📊 Статус и информация

# Проверить статус файлов
git status
git status -s  # краткий формат

# Показать историю коммитов
git log
git log --oneline  # краткий вид
git log --graph  # с визуализацией веток
git log --author="имя"  # фильтр по автору

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

➕ Добавление файлов

# Добавить все файлы
git add .  # все файлы в текущей директории
git add -A  # все файлы в репозитории

# Добавить конкретный файл
git add <имя-файла>

# Интерактивное добавление
git add -p

💾 Коммиты

# Создать коммит
git commit -m "Сообщение коммита"

# Добавить изменения в последний коммит
git commit --amend -m "Новое сообщение"

# Создать коммит со всеми изменениями (пропуская git add)
git commit -a -m "Сообщение"

# Изменить дату коммита
git commit --amend --date="now"

🌳 Ветки (Branching)

# Показать ветки
git branch  # локальные
git branch -a  # все (локальные + удалённые)
git branch -v  # с информацией о последнем коммите

# Создать ветку
git branch <имя-ветки>
git checkout -b <имя-ветки>  # создать и переключиться

# Переключиться на ветку
git checkout <имя-ветки>
git switch <имя-ветки>  # альтернатива (Git 2.23+)

# Удалить ветку
git branch -d <имя-ветки>  # безопасное удаление
git branch -D <имя-ветки>  # принудительное удаление

# Переименовать текущую ветку
git branch -m <новое-имя>

🔀 Слияние и ребейз

# Слить ветку в текущую
git merge <ветка-для-слияния>

# Отменить слияние
git merge --abort

# Ребейз текущей ветки
git rebase <ветка>
git rebase --abort  # отменить ребейз
git rebase --continue  # продолжить после разрешения конфликтов

# Интерактивный ребейз (последние N коммитов)
git rebase -i HEAD~N

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

# Добавить удалённый репозиторий
git remote add origin <url>

# Показать удалённые репозитории
git remote -v

# Получить изменения с удалённого репозитория
git fetch origin
git fetch --all  # со всех удалённых репозиториев

# Скачать изменения и слить
git pull origin <ветка>
git pull --rebase  # с ребейзом вместо мержа

# Отправить изменения
git push origin <ветка>
git push -u origin <ветка>  # установить upstream

# Удалить ветку на удалённом репозитории
git push origin --delete <ветка>

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

# Отменить изменения в файле (до индексации)
git checkout -- <файл>

# Убрать файл из индекса (перед коммитом)
git reset <файл>

# Отменить последний коммит (сохраняя изменения)
git reset --soft HEAD~1

# Отменить последний коммит (удаляя изменения)
git reset --hard HEAD~1

# Временно сохранить изменения
git stash
git stash save "описание"
git stash list  # показать stash'и
git stash pop  # применить и удалить последний stash
git stash apply  # применить, но оставить в списке
git stash drop  # удалить stash

🏷️ Теги

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

# Показать теги
git tag
git show v1.0.0  # информация о теге

# Удалить тег
git tag -d v1.0.0

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

🔍 Поиск

# Поиск в коде
git grep "текст"  # поиск текста в файлах
git grep -n "текст"  # с номерами строк

# Поиск коммитов
git log --grep="текст"  # по сообщению
git log -S "текст"  # по изменениям в коде

🧹 Очистка

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

# Сброс к состоянию удалённого репозитория
git fetch origin
git reset --hard origin/<ветка>

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

# Переместить/переименовать файл
git mv <старое-имя> <новое-имя>

# Показать кто менял файл
git blame <файл>

# Просмотр конкретного коммита
git show <хеш-коммита>

# Создать архив репозитория
git archive --format zip --output archive.zip main

📝 Полезные алиасы (добавить в ~/.gitconfig)

[alias]
    co = checkout
    ci = commit
    st = status
    br = branch
    hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
    type = cat-file -t
    dump = cat-file -p
    unstage = reset HEAD --
    last = log -1 HEAD
    undo = reset --soft HEAD~1

💡 Основной рабочий процесс

  1. git pull - получить свежие изменения
  2. git checkout -b feature/new-feature - создать ветку для задачи
  3. Редактирование файлов
  4. git add . - добавить изменения
  5. git commit -m "Описание изменений" - закоммитить
  6. git push origin feature/new-feature - отправить на сервер
  7. Создать Pull Request/Merge Request

⚠️ Важные предупреждения

  • git reset --hard - безвозвратно удаляет изменения
  • git push --force - перезаписывает историю (опасно для общей ветки)
  • Всегда проверяйте git status перед критическими операциями
  • Перед git clean используйте git clean -n для проверки

Эта шпаргалка охватывает 95% повседневных задач разработчика. Для более сложных операций всегда можно обратиться к официальной документации: git help <команда> или man git-<команда>.

Зависимости: git