🧷 Git Alias — короткие команды вместо длинных
git alias позволяет создавать свои сокращения для часто используемых команд.
Примеры:
Более полезные алиасы:
Просмотр всех алиасов:
Alias — ускорение работы без плагинов и магии.
➡️ GitHub Ready | #урок
git alias позволяет создавать свои сокращения для часто используемых команд.
Примеры:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
Более полезные алиасы:
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.unstage "reset HEAD --"
Просмотр всех алиасов:
git config --get-regexp alias
Alias — ускорение работы без плагинов и магии.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
🌿 Git Clean + Dry Run — безопасная очистка проекта
Иногда в рабочей директории скапливаются временные файлы, логи и артефакты сборки. git clean помогает убрать их, но безопаснее сначала проверить, что удалится.
Проверка без удаления:
Удаление файлов:
Удаление файлов и директорий:
Игнорирование .gitignore:
💡 Использование -n перед -f спасает от случайной потери нужных файлов.
➡️ GitHub Ready | #урок
Иногда в рабочей директории скапливаются временные файлы, логи и артефакты сборки. git clean помогает убрать их, но безопаснее сначала проверить, что удалится.
Проверка без удаления:
git clean -n
Удаление файлов:
git clean -f
Удаление файлов и директорий:
git clean -fd
Игнорирование .gitignore:
git clean -fx
💡 Использование -n перед -f спасает от случайной потери нужных файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🔁 Git Fetch — обновление без вмешательства в код
git fetch загружает изменения из удалённого репозитория, но не трогает рабочую директорию и текущую ветку.
Базовое использование:
Что происходит:
• обновляются ссылки origin/*;
• локальный код не меняется;
• можно спокойно анализировать изменения.
Сравнение перед слиянием:
Обновление всех remote:
fetch — контроль и обзор перед любыми изменениями.
➡️ GitHub Ready | #урок
git fetch загружает изменения из удалённого репозитория, но не трогает рабочую директорию и текущую ветку.
Базовое использование:
git fetch
Что происходит:
• обновляются ссылки origin/*;
• локальный код не меняется;
• можно спокойно анализировать изменения.
Сравнение перед слиянием:
git diff main origin/main
Обновление всех remote:
git fetch --all
fetch — контроль и обзор перед любыми изменениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧯 Git Revert — безопасный откат в публичных ветках
git revert отменяет изменения через новый коммит, не переписывая историю. Это ключевое отличие от reset.
Откат одного коммита:
Откат диапазона:
Если возник конфликт:
Почему это важно:
• история не ломается;
• безопасно для main / develop;
• подходит для командной работы.
revert — правильный способ отмены, когда коммиты уже в общем доступе.
➡️ GitHub Ready | #урок
git revert отменяет изменения через новый коммит, не переписывая историю. Это ключевое отличие от reset.
Откат одного коммита:
git revert <hash>
Откат диапазона:
git revert <hash1>..<hash2>
Если возник конфликт:
git revert --continue
Почему это важно:
• история не ломается;
• безопасно для main / develop;
• подходит для командной работы.
revert — правильный способ отмены, когда коммиты уже в общем доступе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🧠 Git GC — что это и зачем он нужен
git gc (garbage collection) — команда для очистки и оптимизации репозитория. Удаляет недостижимые объекты и сжимает данные.
Ручной запуск:
Более агрессивная очистка:
Что делает:
• уменьшает размер репозитория;
• ускоряет git log, status, diff;
• чистит старые объекты после rebase/reset.
Важно:
• обычно Git запускает GC сам;
• --aggressive — редко и осознанно;
• не влияет на историю коммитов.
git gc — техобслуживание, а не средство «починки» Git.
➡️ GitHub Ready | #урок
git gc (garbage collection) — команда для очистки и оптимизации репозитория. Удаляет недостижимые объекты и сжимает данные.
Ручной запуск:
git gc
Более агрессивная очистка:
git gc --aggressive
Что делает:
• уменьшает размер репозитория;
• ускоряет git log, status, diff;
• чистит старые объекты после rebase/reset.
Важно:
• обычно Git запускает GC сам;
• --aggressive — редко и осознанно;
• не влияет на историю коммитов.
git gc — техобслуживание, а не средство «починки» Git.
Please open Telegram to view this post
VIEW IN TELEGRAM
🪜 Git Upstream — связь локальной ветки с удалённой
Upstream определяет, с какой удалённой веткой связана локальная. Без него git pull и git push работают неявно или требуют аргументов.
Установить upstream:
Проверить связь:
Изменить upstream:
Зачем это нужно:
• короткие git pull / git push;
• понятная синхронизация;
• меньше ошибок с не теми ветками.
Upstream — основа предсказуемой работы с remote.
➡️ GitHub Ready | #урок
Upstream определяет, с какой удалённой веткой связана локальная. Без него git pull и git push работают неявно или требуют аргументов.
Установить upstream:
git push -u origin feature/login
Проверить связь:
git branch -vv
Изменить upstream:
git branch --set-upstream-to=origin/main
Зачем это нужно:
• короткие git pull / git push;
• понятная синхронизация;
• меньше ошибок с не теми ветками.
Upstream — основа предсказуемой работы с remote.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
🧰 Git Rerere — автоматическое запоминание конфликтов
git rerere (reuse recorded resolution) запоминает, как ты решал конфликты, и автоматически применяет это решение в будущем.
Включение:
Как работает:
• при конфликте ты решаешь его вручную;
• Git сохраняет решение;
• при повторном конфликте — применяет его сам.
Проверка статуса:
Очистка сохранённых решений:
Полезно:
• частые rebase;
• долгоживущие ветки;
• повторяющиеся конфликты.
rerere — экономия времени там, где конфликты неизбежны.
➡️ GitHub Ready | #урок
git rerere (reuse recorded resolution) запоминает, как ты решал конфликты, и автоматически применяет это решение в будущем.
Включение:
git config --global rerere.enabled true
Как работает:
• при конфликте ты решаешь его вручную;
• Git сохраняет решение;
• при повторном конфликте — применяет его сам.
Проверка статуса:
git rerere status
Очистка сохранённых решений:
git rerere clear
Полезно:
• частые rebase;
• долгоживущие ветки;
• повторяющиеся конфликты.
rerere — экономия времени там, где конфликты неизбежны.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
100k+ GitHub звезд. 2M посещений за неделю + запущенная соцсеть Moltbook для ИИ-агентов. Кажется, это название закрепилось надолго.
Твой помощник. Твоя машина. Твои правила. Уже успели попробовать?
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2
🧱 Git Sparse-Checkout — работать только с частью репозитория
sparse-checkout позволяет загружать и держать в рабочей директории не весь репозиторий, а только нужные каталоги.
Включение:
Указать нужные директории:
Отключение:
Когда полезно:
• монорепозитории;
• большие проекты;
• ограниченные ресурсы.
sparse-checkout — контроль объёма без костылей и дополнительных clone.
➡️ GitHub Ready | #урок
sparse-checkout позволяет загружать и держать в рабочей директории не весь репозиторий, а только нужные каталоги.
Включение:
git sparse-checkout init
Указать нужные директории:
git sparse-checkout set src docs
Отключение:
git sparse-checkout disable
Когда полезно:
• монорепозитории;
• большие проекты;
• ограниченные ресурсы.
sparse-checkout — контроль объёма без костылей и дополнительных clone.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧪 Git Commit –amend — исправление последнего коммита
git commit --amend позволяет изменить последний коммит без создания нового.
Типичные случаи:
• забыли добавить файл;
• опечатка в сообщении;
• мелкая правка кода.
Использование:
Только изменить сообщение:
Важно:
• переписывает hash коммита;
• не использовать для уже запушенных коммитов;
• идеально перед push или PR.
--amend — аккуратность вместо мусора в истории.
➡️ GitHub Ready | #урок
git commit --amend позволяет изменить последний коммит без создания нового.
Типичные случаи:
• забыли добавить файл;
• опечатка в сообщении;
• мелкая правка кода.
Использование:
git add forgotten_file.js
git commit --amend
Только изменить сообщение:
git commit --amend -m "fix: correct auth flow"
Важно:
• переписывает hash коммита;
• не использовать для уже запушенных коммитов;
• идеально перед push или PR.
--amend — аккуратность вместо мусора в истории.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🧭 Git Describe — понятные версии вместо hash
git describe показывает текущий коммит через ближайший тег. Удобно для отладки, логов и версий сборок.
Базово:
Что вернёт:
Где:
• v1.2.0 — ближайший тег;
• 5 — количество коммитов после тега;
• g9f3a1c2 — hash коммита.
С учётом всех тегов:
Использование:
• версии в CI/CD;
• отладка сборок;
• понимание «где мы находимся» без hash.
git describe — читаемый идентификатор состояния проекта.
➡️ GitHub Ready | #урок
git describe показывает текущий коммит через ближайший тег. Удобно для отладки, логов и версий сборок.
Базово:
git describe
Что вернёт:
v1.2.0-5-g9f3a1c2
Где:
• v1.2.0 — ближайший тег;
• 5 — количество коммитов после тега;
• g9f3a1c2 — hash коммита.
С учётом всех тегов:
git describe --tags
Использование:
• версии в CI/CD;
• отладка сборок;
• понимание «где мы находимся» без hash.
git describe — читаемый идентификатор состояния проекта.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
📐 Git Range-diff — сравнение двух серий коммитов
git range-diff показывает разницу между наборами коммитов, а не файлами. Полезно после rebase, когда нужно понять, что реально изменилось.
Базовый пример:
Что показывает:
• какие коммиты изменились;
• какие были удалены или добавлены;
• как поменялось содержимое коммитов.
Типичный сценарий:
• сделал rebase;
• хочешь проверить, не потерял ли правки;
• сравниваешь старую и новую версию ветки.
Важно:
• работает на уровне истории;
• незаменим при код-ревью после rebase;
• читается проще, чем log + diff.
range-diff — контроль истории, а не файлов.
➡️ GitHub Ready | #урок
git range-diff показывает разницу между наборами коммитов, а не файлами. Полезно после rebase, когда нужно понять, что реально изменилось.
Базовый пример:
git range-diff main..feature main..feature-rebased
Что показывает:
• какие коммиты изменились;
• какие были удалены или добавлены;
• как поменялось содержимое коммитов.
Типичный сценарий:
• сделал rebase;
• хочешь проверить, не потерял ли правки;
• сравниваешь старую и новую версию ветки.
Важно:
• работает на уровне истории;
• незаменим при код-ревью после rebase;
• читается проще, чем log + diff.
range-diff — контроль истории, а не файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🧵 Git Notes — комментарии к коммитам без изменения истории
Добавить заметку:
Просмотр заметки:
Удаление:
Важно:
* заметки хранятся отдельно от коммитов;
* по умолчанию не пушатся;
* для синхронизации:
Использование:
* пояснения к сложным коммитам;
* результаты ревью;
* внутренние комментарии команды.
➡️ GitHub Ready | #урок
git notes позволяет добавлять заметки к коммитам, не меняя их hash и историю.Добавить заметку:
git notes add <hash>
Просмотр заметки:
git notes show <hash>
Удаление:
git notes remove <hash>
Важно:
* заметки хранятся отдельно от коммитов;
* по умолчанию не пушатся;
* для синхронизации:
git push origin refs/notes/*
Использование:
* пояснения к сложным коммитам;
* результаты ревью;
* внутренние комментарии команды.
git notes — контекст без переписывания истории.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🔄 Git Merge — стратегии слияния веток
При слиянии веток Git использует разные стратегии, и их выбор влияет на историю.
Основные стратегии:
1. recursive (по умолчанию)
* подходит для большинства случаев;
* умеет решать конфликты при слиянии двух веток с общим предком.
2. ours
сохраняет изменения текущей ветки;
игнорирует изменения сливаемой ветки:
3. octopus
для слияния более двух веток одновременно;
конфликты не решает, только простые случаи.
Советы:
чаще всего хватает стандартного
Стратегия merge — инструмент контроля истории, а не магия.
➡️ GitHub Ready | #урок
При слиянии веток Git использует разные стратегии, и их выбор влияет на историю.
Основные стратегии:
1. recursive (по умолчанию)
* подходит для большинства случаев;
* умеет решать конфликты при слиянии двух веток с общим предком.
2. ours
сохраняет изменения текущей ветки;
игнорирует изменения сливаемой ветки:
git merge -s ours feature
3. octopus
для слияния более двух веток одновременно;
конфликты не решает, только простые случаи.
Советы:
чаще всего хватает стандартного
recursive;ours — для отмены чужих изменений при слиянии;octopus — при массовом объединении веток для релиза.Стратегия merge — инструмент контроля истории, а не магия.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧾 .gitattributes — управление поведением файлов в Git
.gitattributes позволяет задавать правила обработки файлов: diff, merge, eol, linguist, binary — без влияния на код.
Примеры:
Пометить бинарные файлы:
Настроить конец строк (важно для Windows/Linux):
Отключить diff для файлов:
Задать кастомный diff:
Зачем это нужно:
• меньше конфликтов;
• корректные diff;
• одинаковое поведение в команде;
• контроль без хаков.
.gitattributes — тонкая настройка Git на уровне файлов.
➡️ GitHub Ready | #урок
.gitattributes позволяет задавать правила обработки файлов: diff, merge, eol, linguist, binary — без влияния на код.
Примеры:
Пометить бинарные файлы:
*.png binary
*.zip binary
Настроить конец строк (важно для Windows/Linux):
*.sh text eol=lf
*.bat text eol=crlf
Отключить diff для файлов:
package-lock.json -diff
Задать кастомный diff:
*.md diff=markdown
Зачем это нужно:
• меньше конфликтов;
• корректные diff;
• одинаковое поведение в команде;
• контроль без хаков.
.gitattributes — тонкая настройка Git на уровне файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
🧠 Git Plumbing vs Porcelain — внутренняя кухня Git
Git-команды делятся на два уровня: для людей и для машин.
Porcelain — высокоуровневые команды для ежедневной работы:
• git commit
• git merge
• git pull
• git status
Plumbing — низкоуровневые команды, из которых всё собрано:
• git hash-object
• git cat-file
• git update-index
• git write-tree
Пример:
Зачем знать:
• отладка сложных кейсов;
• понимание, как Git хранит данные;
• написание скриптов и инструментов.
Porcelain — интерфейс. Plumbing — механизм.
➡️ GitHub Ready | #урок
Git-команды делятся на два уровня: для людей и для машин.
Porcelain — высокоуровневые команды для ежедневной работы:
• git commit
• git merge
• git pull
• git status
Plumbing — низкоуровневые команды, из которых всё собрано:
• git hash-object
• git cat-file
• git update-index
• git write-tree
Пример:
git cat-file -p HEAD
Зачем знать:
• отладка сложных кейсов;
• понимание, как Git хранит данные;
• написание скриптов и инструментов.
Porcelain — интерфейс. Plumbing — механизм.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
🧪 Git Filter-Repo — переписывание истории правильно
git filter-repo — современная замена filter-branch. Используется для очистки истории: удаление файлов, директорий, секретов.
Удалить файл из всей истории:
Удалить директорию:
Заменить e-mail автора:
Важно:
• полностью переписывает историю;
• после — force push;
• использовать осознанно.
filter-repo — хирургия истории без костылей.
➡️ GitHub Ready | #урок
git filter-repo — современная замена filter-branch. Используется для очистки истории: удаление файлов, директорий, секретов.
Удалить файл из всей истории:
git filter-repo --path config.env --invert-paths
Удалить директорию:
git filter-repo --path build/ --invert-paths
Заменить e-mail автора:
git filter-repo --email-callback '
return b"user@old.com" == email and b"user@new.com" or email
'
Важно:
• полностью переписывает историю;
• после — force push;
• использовать осознанно.
filter-repo — хирургия истории без костылей.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
📦 Git Bundle — перенос репозитория без интернета
git bundle упаковывает историю репозитория в один файл. Подходит для передачи кода офлайн или через закрытые контуры.
Создать bundle:
Создать bundle с одной веткой:
Проверить содержимое:
Клонировать из bundle:
Использование:
• офлайн-передача;
• air-gapped среды;
• быстрый бэкап истории.
git bundle — репозиторий в одном файле.
➡️ GitHub Ready | #урок
git bundle упаковывает историю репозитория в один файл. Подходит для передачи кода офлайн или через закрытые контуры.
Создать bundle:
git bundle create repo.bundle --all
Создать bundle с одной веткой:
git bundle create feature.bundle feature/login
Проверить содержимое:
git bundle list-heads repo.bundle
Клонировать из bundle:
git clone repo.bundle project
Использование:
• офлайн-передача;
• air-gapped среды;
• быстрый бэкап истории.
git bundle — репозиторий в одном файле.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧩 Git Merge — как использовать --no-ff и зачем он нужен
По умолчанию, если ветка может быть слита без конфликта, Git делает fast-forward — история остаётся линейной. Но иногда нужен merge-коммит для ясности.
Пример:
Что происходит:
• создаётся отдельный коммит слияния;
• сохраняется факт объединения ветки;
• история ветки видна в графе.
Когда использовать:
• длинные фичи;
• командная работа;
• подготовка к релизу.
--no-ff — контроль структуры истории без потери изменений.
➡️ GitHub Ready | #урок
По умолчанию, если ветка может быть слита без конфликта, Git делает fast-forward — история остаётся линейной. Но иногда нужен merge-коммит для ясности.
Пример:
git merge --no-ff feature/login
Что происходит:
• создаётся отдельный коммит слияния;
• сохраняется факт объединения ветки;
• история ветки видна в графе.
Когда использовать:
• длинные фичи;
• командная работа;
• подготовка к релизу.
--no-ff — контроль структуры истории без потери изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
📡 Git Remote — управление удалёнными репозиториями
Посмотреть текущие remote:
Добавить новый:
Переименовать:
Удалить:
Зачем это нужно:
* работа с fork + upstream;
* миграция репозитория;
* контроль источников кода.
➡️ GitHub Ready | #урок
git remote отвечает за подключённые удалённые репозитории и их адреса.Посмотреть текущие remote:
git remote -v
Добавить новый:
git remote add upstream https://github.com/org/project.git
Переименовать:
git remote rename origin old-origin
Удалить:
git remote remove upstream
Зачем это нужно:
* работа с fork + upstream;
* миграция репозитория;
* контроль источников кода.
git remote — карта связей между репозиториями.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤝1