Skip to content

Команды Git объяснённые

Команды Git, которыми вы действительно пользуетесь, сгруппированные по задачам: создать репозиторий, зафиксировать работу, ветвиться и сливать, читать историю, обмениваться изменениями с удалённым репозиторием, отменять ошибки, прятать работу и управлять файлами и сабмодулями. Каждая строка сочетает команду с реалистичным вызовом.

В Git сотни команд, но для ежедневной работы нужно несколько. Ментальная модель такая: рабочий каталог — это ваши файлы, индекс (область подготовки) — следующий коммит, а HEAD — текущий коммит. Вы добавляете в индекс, делаете коммит, делитесь. Читайте статус часто. Всё ниже предполагает, что перечисленная команда уже существует.

Справочная таблица · 55 записи
55 of 55 rows
Установка и настройка
Задаёт ваше имя, email или редактор один раз для всех репозиториев.git config --global user.name "Ada"
Определяет короткое имя для команды, которую вы вводите часто.git config --global alias.co checkout
Создаёт новый репозиторий в текущей папке.git init
Копирует удалённый репозиторий на ваш компьютер.git clone git@github.com:org/repo.git
Копирует только новейшие коммиты одной ветки.git clone --depth 1 --single-branch git@github.com:org/repo.git
Основы снапшотов
Показывает, что в индексе, что изменено и что не отслеживается.git status -sb
Добавляет изменения в индекс, чтобы они попали в следующий коммит.git add src/app.ts
Просматривает изменения по кускам и добавляет только принятые вами.git add -p src/app.ts
Добавляет изменения всех отслеживаемых файлов, не добавляя новые.git add -u
Записывает изменения из индекса как новый коммит.git commit -m "fix: null check"
Заменяет последний коммит исправленным.git commit --amend -m "fix: handle empty input"
Показывает изменения вне индекса, а с --staged — добавленные в него.git diff --staged
Показывает все изменения с последнего коммита, в индексе или нет.git diff HEAD
Ветвление и слияние
Показывает, создаёт или удаляет ветки.git branch feature-x
Удаляет слитую ветку (-D форсирует удаление, -a показывает все ветки).git branch -d feature-x
Переключает ветки (современная замена checkout).git switch feature-x
Создаёт новую ветку и сразу переключается на неё.git switch -c feature-x
Переключает ветки или восстанавливает файлы (старая, более широкая команда).git checkout feature-x
Вносит изменения другой ветки в текущую ветку.git merge feature-x
Отменяет конфликтное слияние и возвращает ветку в прежнее состояние.git merge --abort
Повторно применяет коммиты текущей ветки поверх другой ветки.git rebase main
Объединяет, переупорядочивает или правит коммиты при повторном применении.git rebase -i main
Копирует отдельный коммит из другой ветки в текущую.git cherry-pick a1b2c3d
Помечает коммит читаемой меткой, например версией.git tag -a v1.2.0
Извлекает другую ветку в отдельную папку одновременно с текущей.git worktree add ../repo-feature feature-x
Изучение истории
Просматривает историю коммитов.git log --oneline --graph --decorate
Просматривает историю всех веток, а не только текущей.git log --oneline --graph --all
Показывает полный diff и сообщение одного коммита.git show HEAD
Показывает, кто последним менял каждую строку файла.git blame src/app.ts
Показывает все коммиты, на которые указывал HEAD, включая отброшенные.git reflog
Ищет по истории делением пополам коммит, который что-то сломал.git bisect start
Суммирует коммиты по авторам.git shortlog -sn
Называет текущий коммит отсчётом от ближайшего тега.git describe --tags
Работа с удалённым репозиторием
Показывает или добавляет удалённые репозитории.git remote add origin <url>
Показывает удалённые репозитории с их URL fetch и push.git remote -v
Скачивает удалённые изменения, не меняя ваши ветки.git fetch origin
Скачивает удалённые изменения и удаляет ссылки на удалённые ветки.git fetch --prune
Скачивает и вливает удалённые изменения текущей ветки.git pull --rebase
Отправляет локальные коммиты в удалённый репозиторий.git push -u origin feature-x
Перезаписывает удалённую ветку, но только если никто не отправил изменения раньше вас.git push --force-with-lease origin feature-x
Отмена изменений
Отбрасывает изменения рабочего каталога или убирает их из индекса.git restore src/app.ts
Убирает файл из индекса, сохраняя его правки в рабочем каталоге.git restore --staged src/app.ts
Сдвигает кончик текущей ветки и, по желанию, индекс.git reset --hard HEAD~1
Добавляет новый коммит, отменяющий предыдущий (безопасно публиковать).git revert HEAD
Удаляет неотслеживаемые файлы и папки.git clean -fd
Стэши
Сохраняет незафиксированную работу и сбрасывает рабочий каталог.git stash -u
Показывает все сохранённые стэши.git stash list
Повторно применяет стэш, сохраняя его в списке.git stash apply stash@{1}
Удаляет стэш, который больше не нужен.git stash drop stash@{1}
Повторно применяет последний стэш и удаляет его.git stash pop
Файлы и сабмодули
Перемещает или переименовывает файл и добавляет изменение в индекс.git mv old.ts src/new.ts
Удаляет файл и добавляет удаление в индекс.git rm src/old.ts
Отслеживает другой репозиторий как папку внутри этого.git submodule add git@github.com:org/lib.git lib
Извлекает только названные папки из большого репозитория.git sparse-checkout set src docs
Экспортирует дерево коммита как файл tar или zip.git archive -o repo.zip HEAD