← Назад к вопросам

Какие знаешь команды Git?

1.0 Junior🔥 182 комментариев
#CI/CD и инструменты разработки

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные команды Git, которые я использую ежедневно

Git — это неотъемлемый инструмент в работе iOS-разработчика, и владение им критически важно для эффективной работы в команде, управления кодом и CI/CD процессами. Я разделю команды на логические группы для лучшего понимания их назначения.

1. Создание и настройка репозиториев (init, clone, config)

  • git init — инициализация нового локального репозитория в текущей директории. Первая команда для старта нового проекта.

    git init
    
  • git clone <url> — клонирование удаленного репозитория (например, с GitHub или GitLab) на локальную машину. Основной способ начать работу с существующим проектом.

    git clone https://github.com/company/ios-app.git
    
  • git config — настройка параметров Git (имя пользователя, email, редактор, алиасы). Особенно важна настройка user.name и user.email перед первым коммитом.

    git config --global user.name "Ваше Имя"
    git config --global user.email "your.email@example.com"
    

2. Базовый рабочий цикл (add, commit, status, diff)

Это основа ежедневной работы. Рабочий процесс строится вокруг индекса (staging area).

  • git status — показывает состояние рабочей директории и индекса: какие файлы изменены, но не добавлены в индекс; какие добавлены и готовы к коммиту. Моя самая часто используемая команда для понимания текущего контекста.

    git status
    
  • git add <file> или git add . — добавляет изменения из рабочей директории в индекс (staging area). Подготавливает "снимок" для следующего коммита.

    git add ViewController.swift  # Добавить конкретный файл
    git add .                     # Добавить все измененные файлы в текущей директории
    
  • git commit -m "<message>" — создает коммит (фиксацию) из проиндексированных изменений с заданным сообщением. Сообщения должны быть четкими и следовать соглашениям команды.

    git commit -m "feat: add user profile screen layout"
    
  • git diff — показывает различия между рабочей директорией и индексом, между коммитами или ветками. Незаменима для анализа внесенных изменений перед коммитом.

    git diff                       # Показывает незастейдженные изменения
    git diff --staged              # Показывает изменения в индексе
    git diff feature/login main    # Сравнивает две ветки
    

3. Работа с ветками (branch, checkout, merge, rebase)

Ветвление (branching) — одна из ключевых возможностей Git. В iOS-разработке мы активно используем feature branches, release branches и, конечно, main/develop.

  • git branch — управление ветками: просмотр списка, создание, удаление.

    git branch                     # Список локальных веток
    git branch -a                  # Список всех веток (локальных и удаленных)
    git branch feature/payments    # Создать новую ветку
    git branch -d old-feature      # Удалить локальную ветку (безопасно)
    
  • git checkout <branch> или git switch <branch> — переключение на другую ветку. switch (появилась в Git 2.23) более интуитивна и безопасна для этой операции.

    git checkout main
    git switch feature/login
    
  • git checkout -b <new-branch> или git switch -c <new-branch> — создание новой ветки и немедленное переключение на нее. Типичный сценарий начала работы над новой фичей.

    git switch -c bugfix/crash-on-launch
    
  • git merge <branch> — объединяет изменения из указанной ветки в текущую. Используется, например, при завершении работы над фичей для вливания ее в main или develop.

    git switch main
    git merge feature/login --no-ff  # Слияние с отключением fast-forward
    
  • git rebase <base-branch> — перебазирование. "Перемещает" историю коммитов текущей ветки на вершину указанной базовой ветки, создавая линейную историю. Требует аккуратного использования, особенно с уже опубликованными коммитами.

    git switch feature/login
    git rebase main  # Применить мои коммиты поверх актуального main
    

4. Синхронизация с удаленным репозиторием (remote, fetch, pull, push)

  • git remote -v — просмотр списка подключенных удаленных репозиториев (обычно origin).

  • git fetch [origin] — загружает все изменения из удаленного репозитория (новые ветки, коммиты), но НЕ вливает их в вашу рабочую копию. Безопасная команда для обновления информации.

    git fetch origin
    
  • git pull — фактически git fetch + git merge. Забирает изменения из удаленной ветки и сразу сливает их с текущей локальной веткой.

    git pull origin main
    # Эквивалентно:
    git fetch origin
    git merge origin/main
    
  • git push <remote> <branch> — отправляет локальные коммиты в удаленный репозиторий.

    git push origin feature/login
    git push -u origin feature/login  # С флагом -u устанавливается upstream, далее можно использовать просто `git push`
    

5. Просмотр истории и отладка (log, show, blame)

  • git log — просмотр истории коммитов. Существует множество флагов для красивого и информативного вывода (--oneline, --graph, --decorate).

    git log --oneline -10           # Последние 10 коммитов в одну строку
    git log --graph --all --oneline # Визуализация графа всех веток
    
  • git show <commit> — показывает информацию о конкретном коммите: автор, дата, изменения (diff).

    git show a1b2c3d
    
  • git blame <file> — показывает построчную историю файла: кто и в каком коммите последний раз менял каждую строку. Очень полезна для поиска автора конкретного кода.

    git blame Models/User.swift
    

6. Отмена изменений и "спассательные" операции (reset, restore, revert, stash)

  • git restore <file> — отмена изменений в рабочей директории (новый, более безопасный аналог git checkout -- <file>).

    git restore brokenfile.swift  # Вернуть файл к состоянию в индексе
    git restore . --staged        # Убрать все файлы из индекса
    
  • git reset — более мощная и потенциально опасная команда для перемещения указателя ветки (HEAD) и управления индексом. --soft, --mixed (по умолчанию), --hard.

    git reset --soft HEAD~1   # Отменить последний коммит, оставив изменения в индексе
    git reset HEAD~1          # Отменить последний коммит, оставив изменения в рабочей директории
    git reset --hard HEAD~1   # ОПАСНО: Удалить последний коммит и все связанные с ним изменения
    
  • git revert <commit> — создает новый коммит, который отменяет изменения указанного коммита. Безопасный способ отменить изменения в общей истории, так как не переписывает ее.

    git revert a1b2c3d  # Создаст коммит, отменяющий коммит a1b2c3d
    
  • git stash — временно "прячет" незакоммиченные изменения, очищая рабочую директорию, чтобы можно было переключить ветку или выполнить срочную задачу. Крайне полезная команда.

    git stash push -m "WIP: auth flow"  # Спрятать изменения с сообщением
    git stash list                       # Показать список "заначек"
    git stash pop                        # Применить последнюю "заначку" и удалить ее из списка
    

Это далеко не исчерпывающий список, но он покрывает 95% повседневных задач iOS-разработчика. Понимание этих команд и, что важнее, их взаимодействия (например, цикл fetch -> rebase -> push для обновления feature-ветки) является обязательным навыком для профессиональной работы.