Перейти к основному содержанию

Команды Git

Основные команды Git и их краткое описание:

  1. Инициализация и клонирование

    • git init — создаёт новый репозиторий в текущей папке.
    • git clone <url> — клонирует удалённый репозиторий на локальную машину.
  2. Состояние и изменения

    • git status — показывает текущее состояние рабочей директории (изменённые, новые, неотслеживаемые файлы).
    • git diff — отображает различия между рабочей копией и последним коммитом.
    • git diff --staged — показывает различия для файлов, добавленных в индекс (staging area).
  3. Добавление и коммит

    • git add <file> — добавляет файл в индекс (staging area) для последующего коммита.
    • git add . — добавляет все изменения в текущей директории в индекс.
    • git commit -m "сообщение" — создаёт коммит с описанием изменений.
    • git commit -a -m "сообщение" — автоматически добавляет и коммитит отслеживаемые файлы (не работает для новых файлов).
  4. Удаление неотслеживаемых файлов из рабочей директории

    — то есть те, которые:
     не добавлены в индекс (git add не вызывался),
     не находятся под управлением Git,
     не описаны в .gitignore.

    • git clean -n — покажет, что будет удалено, но ничего не тронет.
    • git clean -f . — удалить файлы.
    • git clean -fd — удалить файлы и папки (рекурсивно).
    • git clean -fx — удалить всё, включая файлы, игнорируемые через .gitignore.
    • git clean -fdx — полная очистка: все неотслеживаемые файлы и папки, даже из .gitignore
  5. Просмотр истории

    • git log — показывает историю коммитов.
    • git log --oneline — краткий формат истории.
    • git log --graph --all --oneline — визуализирует ветки и слияния.
  6. Работа с ветками

    • git branch — список локальных веток.
    • git branch <имя> — создаёт новую ветку.
    • git checkout <ветка> — переключается на указанную ветку.
    • git switch <ветка> — современная альтернатива checkout для переключения.
    • git merge <ветка> — сливает указанную ветку в текущую.
    • git branch -d <имя> — удаляет ветку (только если она слита).
  7. Работа с удалённым репозиторием

    • git remote -v — показывает привязанные удалённые репозитории.
    • git fetch — загружает изменения из удалённого репозитория, но не сливает их.
    • git pull — эквивалент fetch + merge (обновляет текущую ветку).
    • git push — отправляет локальные коммиты в удалённый репозиторий.
    • git push origin <ветка> — отправляет конкретную ветку.
  8. Отмена изменений

    • git restore <file> — отменяет изменения в рабочей копии файла.
    • git restore --staged <file> — убирает файл из индекса (но сохраняет изменения в рабочей копии).
    • git reset --hard HEAD — отменяет все локальные изменения и возвращает состояние последнего коммита.
    • git revert <коммит> — создаёт новый коммит, отменяющий указанный.
  9. Теги

    • git tag — список тегов.
    • git tag v1.0 — создаёт лёгкий тег.
    • git tag -a v1.0 -m "релиз" — аннотированный тег.
    • git push origin v1.0 — отправляет тег на сервер.
       

Практические сценарии

  1. Создание нового проекта и первый коммит

    mkdir my-project
    cd my-project
    git init
    echo "# My Project" > README.md
    git add README.md
    git commit -m "Initial commit: add README"
  2. Подключение к удалённому репозиторию (например, на GitHub) и отправка кода

    git remote add origin https://github.com/ваш-логин/my-project.git
    git push -u origin main
  3. Создание и переключение на новую ветку для новой функции

    git checkout -b feature/login-form
    # или современный способ:
    git switch -c feature/login-form
  4. Завершение работы над функцией: слияние в main

    git checkout main
    git merge feature/login-form
    git branch -d feature/login-form  # удаляем ветку после слияния
  5. Отмена незакоммиченных изменений в файле

    Допустим, вы случайно изменили config.php и хотите вернуть его состояние:

    # Оба варианта делают одно и то же
    git checkout config.php     # Устаревший  способ (deprecated)
    git restore config.php        # Рекомендуемый с Git 2.23+ (2019 г.)
  6. Отмена последнего коммита (но сохранение изменений)

    git reset --soft HEAD~1

    Коммит удалён, но изменения остались в индексе — можно переоформить коммит.

    Если нужно полностью отменить и потерять изменения:

    git reset --hard HEAD~1
  7. Создание тега для релиза

    git tag -a v1.0.0 -m "Первый стабильный релиз"
    git push origin v1.0.0

 

Tags