Какие знаешь команды Git?
Комментарии (2)
Ответ сгенерирован нейросетью и может содержать ошибки
Основные команды 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-ветки) является обязательным навыком для профессиональной работы.