ENDERU
GitHub22 repositoriesDaily Tech3 subscribersaudion.devthe product shelfRSSrelease feed
← All notesProjects

Audion Hub Manager — Git без заучивания команд

English · О программе · Руководство · Консольная команда

Содержание

Каждая кнопка окна запускает настоящую команду git и показывает её целиком. Под командой терминал пишет простыми словами, что она сделала и как её отменить. Все команды программы собраны в одну таблицу — канон Git (system_core\core\git_canon.py); таблицы ниже написаны из него и всегда совпадают с тем, что делает окно.

Четыре места, где живёт работа

РАБОЧАЯ ПАПКА  ──add──▶  ИНДЕКС  ──commit──▶  ИСТОРИЯ  ──push──▶  СЕРВЕР
файлы на диске          «стол перед         коммиты на          GitHub, GitLab,
                        коммитом»           этом компьютере     Forgejo
      ◀──restore──           ◀──restore --staged──     ◀──pull / fetch──

Раздел ИЗМЕНЕНИЯ показывает эти четыре места полосой над списком файлов: сколько изменено, сколько лежит в индексе, есть ли коммиты, что не отправлено. Нажатие на место показывает только его файлы или открывает его раздел.

МестоЧто тамТудаОбратно
рабочая папкафайлы, как они лежат на дискеправка файлаgit restore — вернуть к виду из индекса
индексто, что войдёт в следующий коммитgit add (F5)git restore --staged (F6)
историякоммиты этого компьютераgit commit (КОММИТ)git reset --soft HEAD~1 — убрать последний
серверкоммиты, которые видят другиеgit pushотправленное отменяют git revert, а не переписыванием

Слова Git простыми словами

СловоПростыми словами
репозиторийпапка с историей: рядом с файлами лежит скрытая .git
коммитзапись в истории: какие файлы стали какими, кто и зачем
индекс (staging)стол перед коммитом: на него кладут то, что войдёт в следующую запись
веткачерновик: отдельная линия работы, которая не мешает другим
mainчистовик: главная ветка, из которой выпускают
слияние (merge)принять черновик в чистовик
конфликтдве ветки поменяли одно место по-разному; Git просит выбрать
remote, originсервер, куда отправляют и откуда забирают; origin — главный
push / pull / fetchотправить свои коммиты / забрать чужие и дописать / только узнать, что нового
тегименная метка версии на коммите: projection-v0.1.2
stashящик для правок, которые мешают перейти на другую ветку
HEADгде вы сейчас: коммит, на котором стоит рабочая папка
reflogжурнал перемещений HEAD: в нём находятся даже «потерянные» коммиты
предложение правок (PR, MR)просьба принять ветку в main; делается на сайте GitHub, GitLab или Forgejo

Риск и режим кнопки

У каждой кнопки точка риска и подсказка с командой, её смыслом и способом отмены.

РискЗначит
читаетничего не меняет
меняетменяет только этот репозиторий
сетьговорит с сервером
опасноможет потерять работу или переписать историю — окно спросит
РежимЗначит
сразукоманда идёт по нажатию
спроситсначала вопрос: команда целиком, что сейчас не закоммичено и как отменить; reset --hard подтверждается вводом слова RESET
заготовкакоманда встаёт в строку терминала с отмеченными местами; её дописывают и запускают сами

Переключатель ОБЪЯСНЯТЬ в заголовке окна включает строку под каждой командой терминала: что она сделала и как её отменить. Когда станет привычно, его выключают.

Канон по разделам

Места в командах: ‹path› и ‹paths› — файлы, ‹commit› — коммит, ‹branch› — ветка, ‹new_branch› — имя новой ветки, ‹remote› — имя сервера, ‹url› — его адрес, ‹message› — сообщение, ‹tag› — метка версии, ‹range› — цепочка коммитов, ‹dest› — папка клона, ‹bundle› — файл резерва. Окно подставляет их из выбранного: файла, коммита, ветки, полей.

ИЗМЕНЕНИЯ

<!-- canon:changes -->

КомандаЧто делаетКак отменитьРиск
git status --short --branchЧто изменено, что в индексе и насколько ветка впереди или позади remote.Ничего не меняет.читает · сразу
git diff -- ‹path›Чем файл в рабочей папке отличается от индекса: что ещё не подготовлено к коммиту.Ничего не меняет.читает · сразу
git diff --cached -- ‹path›Что из файла уже лежит в индексе и войдёт в следующий коммит.Ничего не меняет.читает · сразу
git diff HEAD -- ‹path›Все изменения файла против последнего коммита — и в индексе, и нет.Ничего не меняет.читает · сразу
git blame -- ‹path›Кто и в каком коммите написал каждую строку файла.Ничего не меняет.читает · сразу
git add -- ‹paths›Кладёт файлы в индекс — «на стол перед коммитом». Следующий коммит возьмёт именно то, что в индексе.Отменить: git restore --staged -- ‹файлы›меняет · сразу
git add -- ‹paths›Кладёт в индекс все изменения слоя, но только файлы, которые разрешает профиль проекта: логи, сборки и секреты не попадут.Отменить: git restore --staged -- .меняет · сразу
git restore --staged -- ‹paths›Снимает файлы со стола: они остаются изменёнными в рабочей папке, но в коммит не войдут.Отменить: git add -- ‹файлы›меняет · сразу
git rm --cached -- ‹paths›Снимает файлы со стола, пока в репозитории нет ни одного коммита: из индекса они уходят, в рабочей папке остаются.Отменить: git add -- ‹файлы›меняет · сразу
git restore -- ‹paths›Возвращает файлы в рабочей папке к виду из индекса. Незакоммиченные правки этих файлов пропадут.Отменить нельзя: этих правок нет ни в одном коммите.опасно · спросит
git commit -m ‹message›Записывает в историю всё, что лежит в индексе, одним снимком с сообщением.Отменить последний: git reset --soft HEAD~1 (файлы вернутся в индекс).меняет · сразу
git commit --only -m ‹message› -- ‹paths›Коммит только отмеченных файлов, что бы ни лежало в индексе.Отменить: git reset --soft HEAD~1меняет · сразу
git commit --amend -m ‹message›Переписывает последний коммит: новое сообщение и всё, что сейчас в индексе. Если коммит уже отправлен — история разойдётся с remote.Отменить: git reset --soft HEAD@{1}опасно · спросит
git tag -a ‹tag› -m ‹message›Ставит именную метку версии на текущий коммит. Push с --follow-tags отправит её вместе с веткой.Отменить: git tag -d ‹тег›меняет · сразу

<!-- /canon -->

ИСТОРИЯ

<!-- canon:history -->

КомандаЧто делаетКак отменитьРиск
git log --oneline --decorate -20Последние 20 коммитов по одной строке.Ничего не меняет.читает · сразу
git log --graph --oneline --decorate --all -50Граф всех веток: где разошлись и где сошлись.Ничего не меняет.читает · сразу
git log --date=short --pretty=format:%h%x09%ad%x09%an%x09%s -40 -- ‹path›История одного файла: какие коммиты его меняли.Ничего не меняет.читает · сразу
git reflog --date=local -20Журнал перемещений HEAD — спасательный круг: здесь видны даже «потерянные» коммиты.Ничего не меняет.читает · сразу
git show --stat ‹commit›Что изменил коммит: сообщение, автор, файлы.Ничего не меняет.читает · сразу
git tag -n --sort=-creatordateВсе теги с подписями, новые сверху.Ничего не меняет.читает · сразу
git tag -a ‹tag› ‹commit› -m ‹message›Ставит метку версии на выбранный коммит.Отменить: git tag -d ‹тег›меняет · сразу
git switch -c ‹new_branch› ‹commit›Создаёт ветку на выбранном коммите и переходит на неё — так спасают «потерянный» коммит из reflog.Удалить: git branch -d ‹ветка›меняет · сразу
git revert --no-edit ‹commit›Делает НОВЫЙ коммит, который отменяет изменения выбранного. История не переписывается — годится и для отправленных коммитов.Отменить: git revert ‹новый коммит›меняет · сразу
git cherry-pick ‹commit›Копирует изменения выбранного коммита в текущую ветку новым коммитом.При конфликте: git cherry-pick --abortменяет · сразу
git reset --soft HEAD~1Убирает последний коммит, а его файлы оставляет в индексе: можно переписать сообщение или разбить коммит.Отменить: git reset --soft HEAD@{1}опасно · спросит
git reset --hard ‹commit›Переносит ветку на выбранный коммит и стирает ВСЕ незакоммиченные изменения рабочей папки и индекса.Коммиты найдутся в reflog; незакоммиченное пропадёт навсегда.опасно · спросит

<!-- /canon -->

ВЕТКИ

<!-- canon:branches -->

КомандаЧто делаетКак отменитьРиск
git branch -vvВетки, их пары на сервере и насколько они впереди или позади.Ничего не меняет.читает · сразу
git switch ‹branch›Переключает рабочую папку на другую ветку. Незакоммиченные правки Git перенесёт или откажется, если они мешают.Вернуться: git switch -меняет · сразу
git switch -c ‹new_branch›Создаёт ветку от текущего коммита и переходит на неё.Удалить: git branch -d ‹ветка›меняет · сразу
git switch -Возвращает на предыдущую ветку.Ещё раз — обратно.меняет · сразу
git log --left-right --graph --cherry-pick --oneline HEAD...‹branch›Какие коммиты есть только в текущей ветке (<) и только в выбранной (>).Ничего не меняет.читает · сразу
git merge --no-ff --no-edit ‹branch›Сливает выбранную ветку в текущую отдельным коммитом слияния — в графе видно, откуда пришла работа.При конфликте: git merge --abortменяет · сразу
git branch -d ‹branch›Удаляет слитую ветку. Неслитую Git удалить не даст.Вернуть: git switch -c ‹ветка› ‹хэш из reflog›меняет · сразу
git stash push -u -m ‹message›Откладывает все незакоммиченные правки и новые файлы в «ящик» и очищает рабочую папку.Вернуть: git stash popменяет · сразу
git stash popДостаёт последние отложенные правки обратно в рабочую папку.Отложить снова: git stash pushменяет · сразу
git stash listЧто лежит в ящике отложенного.Ничего не меняет.читает · сразу
git rebase -i ‹range›Переписывает цепочку коммитов: склеить, переставить, переименовать. Только для неотправленных коммитов.Во время: git rebase --abort; после: через reflog.опасно · заготовка
git merge --abortПрерывает слияние с конфликтами и возвращает всё как было до него.—меняет · сразу
git cherry-pick --abortПрерывает перенос коммита с конфликтами и возвращает всё как было до него.—меняет · сразу

<!-- /canon -->

СИНХРОНИЗАЦИЯ

<!-- canon:sync -->

КомандаЧто делаетКак отменитьРиск
git fetch --all --pruneСкачивает новости со всех remote, не трогая ваши ветки и файлы. Самая безопасная сетевая команда.Ничего вашего не меняет.сеть · сразу
git fetch --prune ‹remote›Узнаёт, что нового на одном сервере, не трогая ваши ветки и файлы.Ничего вашего не меняет.сеть · сразу
git pull --ff-only ‹remote› ‹branch›Забирает новые коммиты с сервера, только если их можно просто дописать сверху, без слияния.Откажет, если ветки разошлись: тогда — ВЕТКИ, слияние.сеть · сразу
git push --follow-tags ‹remote› ‹branch›Отправляет коммиты текущей ветки и теги на сервер, в её пару. Если имена разные, команда называет обе: ‹ветка›:‹пара›.Отправленное отменяют новым коммитом (revert), а не переписыванием.сеть · сразу
git push -u ‹remote› ‹branch›Отправляет новую ветку и связывает её с парой на сервере: дальше push и pull без имён.Удалить на сервере: git push ‹remote› --delete ‹ветка›сеть · сразу
git push --follow-tags ‹remote› ‹branch›Отправляет ветку и теги по очереди во все remote репозитория.—сеть · сразу
git remote -vКуда репозиторий умеет отправлять и откуда забирать.Ничего не меняет.читает · сразу
git remote add ‹remote› ‹url›Прописывает в репозиторий remote из сохранённого списка.Убрать: git remote remove ‹имя›меняет · сразу
git remote set-url ‹remote› ‹url›Меняет адрес remote, который уже есть в репозитории.Вернуть: git remote set-url ‹имя› ‹прежний адрес›меняет · сразу
git remote set-url --add --push ‹remote› ‹url›Один remote, несколько адресов отправки: забирать из одного, отправлять в несколько зеркал.Убрать: git remote set-url --delete --push ‹remote› ‹адрес›меняет · сразу
ssh -T -o BatchMode=yes git@github.comПроверяет, пускает ли GitHub по вашему SSH-ключу.Ничего не меняет.сеть · сразу
ssh -T -o BatchMode=yes git@gitlab.comПроверяет, пускает ли GitLab по вашему SSH-ключу.Ничего не меняет.сеть · сразу
gh run list --limit 15Последние прогоны GitHub Actions.Ничего не меняет.сеть · сразу
gh run watchСледит за идущим прогоном GitHub Actions до конца.Ничего не меняет.сеть · сразу
glab ci statusСостояние конвейера GitLab CI.Ничего не меняет.сеть · сразу

<!-- /canon -->

ПРОЕКТЫ

<!-- canon:projects -->

КомандаЧто делаетКак отменитьРиск
git clone ‹url› ‹dest›Скачивает репозиторий целиком в новую папку.Удалить папку.сеть · сразу

<!-- /canon -->

ОБСЛУЖИВАНИЕ

<!-- canon:service -->

КомандаЧто делаетКак отменитьРиск
git init -b ‹branch›Создаёт пустой репозиторий (папку .git) в выбранном слое; первая ветка — ветка проекта из реестра, обычно main.Удалить папку .git.меняет · сразу
git rev-parse --show-toplevelКорень репозитория, в котором идут команды.Ничего не меняет.читает · сразу
git bundle create ‹bundle› ‹branch› --tagsВся история ветки и теги одним файлом — резерв без сервера. Поднимается командой git clone ‹файл›.Удалить файл.меняет · сразу
git clean -ndПоказывает, какие неотслеживаемые файлы удалил бы git clean. Сам ничего не удаляет.Ничего не меняет.читает · сразу
git gcУплотняет базу репозитория. Безопасно.—меняет · сразу
git fsck --fullПроверяет целостность базы репозитория.Ничего не меняет.читает · сразу
git config --list --show-originВсе настройки Git и из какого файла каждая.Ничего не меняет.читает · сразу
git config --show-origin --get-regexp user\.Под каким именем и почтой будут подписаны коммиты.Ничего не меняет.читает · сразу

<!-- /canon -->

Частые положения и что делать

Сохранить работу. ИЗМЕНЕНИЯ: отметить файлы пробелом, F5 — в индекс, внизу тема коммита, КОММИТ (Ctrl+Enter). Файлы вне профиля проекта в индекс не идут — так в историю не попадают сборки, логи и секреты.

Закоммитил не то, ещё не отправил. ИСТОРИЯ → «убрать последний (soft)»: коммит уходит, файлы остаются в индексе; поправить и закоммитить снова. Или галочка «исправить прошлый (--amend)» в блоке КОММИТ.

Испортил файл, нужен вид из последнего коммита. ИЗМЕНЕНИЯ → «вернуть» (F8). Окно спросит: правки этого файла пропадут навсегда.

Плохой коммит уже на сервере. ИСТОРИЯ → выбрать коммит → revert. Появится новый коммит, который отменяет изменения выбранного; история не переписывается, другие ничего не теряют.

Потерял коммит после reset. ИСТОРИЯ → вкладка REFLOG, выбрать коммит, вписать имя ветки внизу → «ветка отсюда».

Слияние остановилось на конфликте. В ИЗМЕНЕНИЯХ файлы с буквой U: поправить их, F5 — в индекс, КОММИТ. Передумали — ВЕТКИ → «если застряли» → git merge --abort, всё вернётся как было до слияния.

pull отказал: ветки разошлись. ВЕТКИ: выбрать ветку сервера (origin/main) → «влить в текущую», разобрать конфликт, если будет, затем PUSH. Программа нарочно забирает только перемоткой (pull --ff-only): слияние вы делаете сами и видите.

Правки мешают перейти на другую ветку. ВЕТКИ → «отложить» (stash), перейти, поработать, вернуться, «достать».

Выпустить версию. Блок КОММИТ: серия (projection), окно предложит следующий номер по тегам серии; patch, minor или major; галочка «поставить тег». После коммита — PUSH: --follow-tags отправит тег вместе с веткой.

Резерв без сервера. ОБСЛУЖИВАНИЕ → git bundle create: вся история ветки и теги одним файлом. Поднимается командой git clone ‹файл›.

Новая ветка для задачи. ВЕТКИ: имя внизу (feature/отчёт) → «создать и перейти». Первый push — push -u: он свяжет ветку с парой на сервере, дальше push и pull без имён.

Сообщение коммита

Блок КОММИТ собирает сообщение из частей и показывает его целиком в рамке:

тип(область): серия версия - тема
docs(readme): projection v0.1.3 - раздел о зеркале
ТипКогда
docsдокументы, тексты
codeкод, новое умение
fixисправление ошибки
uiвид окна
testпроверки
choreуборка, сборка, зависимости
auditразбор и проверка

Область — часть проекта (readme, mirror, ui), можно пусто. Серия и версия необязательны: с ними сообщение несёт номер, а галочка «поставить тег» ставит метку серия-версия на этот коммит. Номер окно предлагает следующий по тегам серии; patch — исправление (0.1.1 → 0.1.2), minor — новое умение (0.1 → 0.2), major — несовместимое (0 → 1).

Учебная лаборатория

Десять маленьких репозиториев в известных состояниях. Их строит ПРОЕКТЫ → УЧЕБНАЯ ЛАБОРАТОРИЯ → «создать заново» или hub_cli.cmd lab create --replace --register: прежние уходят в Корзину, новые вносятся в реестр (lab_01 … lab_10). Авторы и даты в них постоянные, поэтому коммиты получают те же хэши на любой машине. Ломайте смело.

РепозиторийЧто в нёмЧто попробовать
01first-commitфайлы, репозитория ещё нетgit init, add, commit
02indexизменены, новые, удалён, переименован, файл наполовину в индексеstatus, три вида diff, add, restore --staged, restore, коммит части файлов
03branch-mergeветка feature/login позади main, fix/typo уже слитаswitch, switch -c, switch -, сравнить, merge --no-ff, branch -d
04conflictслияние остановилось на конфликте в style.cssразобрать конфликт или merge --abort
05behind-remoteсвой «сервер» в _servers; у вас 2 неотправленных коммита, на сервере 1 новыйfetch, pull --ff-only (на main откажет, на docs пройдёт), push, push -u
06stashправка notes.txt мешает перейти на ветку other; один stash уже лежитstash push, switch, stash list, stash pop
07tagsтеги projection-v0.1.0 и v0.1.1, после них ещё коммитследующая версия, tag -a, tag -n
08lost-commitкоммит «step two» стёрт reset'омreflog, ветка от потерянного коммита
09revert-resetтретий коммит сломал расчётrevert, reset --soft, reset --hard
10source-mirrorпроект (source) и его GIT-КОПИЯ (git-copy) разошлисьплан зеркала, применить, сверить, коммит GIT-КОПИИ

Тесты программы гоняют каждую команду канона на свежей копии лаборатории и проверяют, что из неё вышло; пять сетевых (ssh -T, gh, glab) — по форме команды.

Edited 10.24.2026