🧵 Git Patch — перенос изменений без merge и cherry-pick
git patch позволяет переносить изменения между репозиториями или ветками в виде файлов-патчей.
Создать патч из последнего коммита:
Создать патчи для диапазона коммитов:
Применить патч:
Или с созданием коммита:
Когда это используют:
• код-ревью по почте;
• перенос правок без доступа к remote;
• изоляция изменений.
Patch — перенос кода без привязки к репозиторию.
➡️ GitHub Ready | #урок
git patch позволяет переносить изменения между репозиториями или ветками в виде файлов-патчей.
Создать патч из последнего коммита:
git format-patch -1 HEAD
Создать патчи для диапазона коммитов:
git format-patch main..feature
Применить патч:
git apply fix.patch
Или с созданием коммита:
git am fix.patch
Когда это используют:
• код-ревью по почте;
• перенос правок без доступа к remote;
• изоляция изменений.
Patch — перенос кода без привязки к репозиторию.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🧭 Git HEAD~ и ^ — навигация по истории коммитов
Git позволяет ссылаться на коммиты относительно текущего положения, без копирования hash.
Примеры:
Оператор ^:
Комбинации:
Полезно для:
• reset / checkout;
• revert;
• анализа истории без git log.
Относительные ссылки — быстрый способ перемещаться по истории Git.
➡️ GitHub Ready | #урок
Git позволяет ссылаться на коммиты относительно текущего положения, без копирования hash.
Примеры:
HEAD~1 # предыдущий коммит
HEAD~3 # три коммита назад
Оператор ^:
HEAD^ # первый родитель
HEAD^2 # второй родитель (при merge)
Комбинации:
HEAD~2^
Полезно для:
• reset / checkout;
• revert;
• анализа истории без git log.
Относительные ссылки — быстрый способ перемещаться по истории Git.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
📌 Git Assume-Unchanged vs Skip-Worktree — временно игнорировать изменения
Эти флаги говорят Git не обращать внимания на локальные изменения, но делают это по-разному.
Assume-unchanged
* Git перестаёт проверять изменения файла;
* используется для ускорения
* небезопасен при активной разработке.
Skip-worktree
* файл считается «не для изменений»;
* безопаснее для локальных конфигов;
* часто применяют для
Сброс флагов:
Важно:
* не замена
* не коммитится;
* действует только локально.
Эти флаги — для тонкого локального контроля, а не для команды.
➡️ GitHub Ready | #урок
Эти флаги говорят Git не обращать внимания на локальные изменения, но делают это по-разному.
Assume-unchanged
git update-index --assume-unchanged config.yml
* Git перестаёт проверять изменения файла;
* используется для ускорения
status;* небезопасен при активной разработке.
Skip-worktree
git update-index --skip-worktree config.yml
* файл считается «не для изменений»;
* безопаснее для локальных конфигов;
* часто применяют для
*.env.Сброс флагов:
git update-index --no-assume-unchanged config.yml
git update-index --no-skip-worktree config.yml
Важно:
* не замена
.gitignore;* не коммитится;
* действует только локально.
Эти флаги — для тонкого локального контроля, а не для команды.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧩 Git Shortlog — краткая статистика по коммитам
Базовое использование:
Список авторов с количеством коммитов:
*
*
Фильтр по ветке или диапазону:
Когда полезно:
* отчёт для менеджеров;
* подготовка релизного отчёта;
* обзор активности команды.
➡️ GitHub Ready | #урок
git shortlog показывает, кто и сколько коммитов сделал, удобно для отчётов и обзора вклада команды.Базовое использование:
git shortlog
Список авторов с количеством коммитов:
git shortlog -s -n
*
-s — только числа;*
-n — сортировка по количеству коммитов.Фильтр по ветке или диапазону:
git shortlog main..feature
Когда полезно:
* отчёт для менеджеров;
* подготовка релизного отчёта;
* обзор активности команды.
shortlog — быстрый взгляд на вклад каждого разработчика.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
🧾 .git-blame-ignore-revs — чтобы blame был полезным
Иногда git blame показывает коммиты с форматированием или рефакторингом, которые не несут смысла. Это можно исключить.
Создай файл:
Добавь hash-коммиты, которые нужно игнорировать:
Включи настройку:
Что это даёт:
• blame показывает реальные изменения логики;
• форматирование не шумит;
• проще искать причины багов.
.git-blame-ignore-revs - чистый blame без мусора.
➡️ GitHub Ready | #урок
Иногда git blame показывает коммиты с форматированием или рефакторингом, которые не несут смысла. Это можно исключить.
Создай файл:
.git-blame-ignore-revs
Добавь hash-коммиты, которые нужно игнорировать:
a1b2c3d4
e5f6g7h8
Включи настройку:
git config blame.ignoreRevsFile .git-blame-ignore-revs
Что это даёт:
• blame показывает реальные изменения логики;
• форматирование не шумит;
• проще искать причины багов.
.git-blame-ignore-revs - чистый blame без мусора.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧠 Git Rev-Parse — как Git понимает ссылки на коммиты
Получить hash текущего коммита:
Hash ветки:
Проверка, существует ли ссылка:
Определить имя текущей ветки:
Зачем использовать:
* shell-скрипты и CI;
* диагностика сложных кейсов;
* понимание, как Git резолвит ссылки.
➡️ GitHub Ready | #урок
git rev-parse показывает, во что Git реально преобразует ссылки вроде HEAD, веток и тегов. Полезно для скриптов и отладки.Получить hash текущего коммита:
git rev-parse HEAD
Hash ветки:
git rev-parse main
Проверка, существует ли ссылка:
git rev-parse --verify feature/login
Определить имя текущей ветки:
git rev-parse --abbrev-ref HEAD
Зачем использовать:
* shell-скрипты и CI;
* диагностика сложных кейсов;
* понимание, как Git резолвит ссылки.
rev-parse — взгляд на Git без абстракций.Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🛠 Git Worktree Prune — чистим старые рабочие копии
При использовании
Проверка списка:
Очистка несуществующих директорий:
Что делает:
* удаляет записи о недоступных worktree;
* не трогает существующие рабочие каталоги;
* упрощает управление несколькими рабочими копиями.
➡️ GitHub Ready | #урок
При использовании
git worktree иногда остаются неактуальные директории. prune помогает убрать ссылки на удалённые или удалённые worktree.Проверка списка:
git worktree list
Очистка несуществующих директорий:
git worktree prune
Что делает:
* удаляет записи о недоступных worktree;
* не трогает существующие рабочие каталоги;
* упрощает управление несколькими рабочими копиями.
worktree prune — поддержка порядка при множестве рабочих деревьев.Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🧪 Git Rerere — повторное использование решений конфликтов
Включение:
Проверить сохранённые решения:
Очистить базу решений:
Где полезно:
* частые rebase;
* долгоживущие ветки;
* повторяющиеся конфликты.
➡️ GitHub Ready | #урок
git rerere сохраняет твои решения конфликтов и автоматически применяет их при повторных конфликтах.Включение:
git config --global rerere.enabled true
Проверить сохранённые решения:
git rerere status
Очистить базу решений:
git rerere clear
Где полезно:
* частые rebase;
* долгоживущие ветки;
* повторяющиеся конфликты.
rerere — инструмент для тех, кто устал решать одно и то же.Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
📊 Git Count-Objects — что происходит внутри .git
Базовое использование:
Более подробная информация:
Что можно увидеть:
* количество loose-объектов;
* размер pack-файлов;
* общий объём данных.
Когда полезно:
* репозиторий резко вырос;
* диагностика после переписывания истории;
* проверка перед
➡️ GitHub Ready | #урок
git count-objects показывает статистику объектов в репозитории и помогает понять его размер и состояние.Базовое использование:
git count-objects
Более подробная информация:
git count-objects -v
Что можно увидеть:
* количество loose-объектов;
* размер pack-файлов;
* общий объём данных.
Когда полезно:
* репозиторий резко вырос;
* диагностика после переписывания истории;
* проверка перед
git gc.count-objects — быстрый способ понять, что происходит внутри Git.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🧬 Git Replace — временная подмена коммита без переписывания истории
Создать замену:
Посмотреть активные замены:
Удалить замену:
Что это даёт:
* тестирование альтернативной истории;
* анализ изменений без force push;
* эксперименты с графом коммитов.
Важно:
* замены действуют локально;
* не отправляются в remote по умолчанию;
* это инструмент для продвинутой диагностики.
➡️ GitHub Ready | #урок
git replace позволяет подменить один объект Git другим. История физически не меняется, но Git будет показывать её с учётом замены.Создать замену:
git replace <old_commit> <new_commit>
Посмотреть активные замены:
git replace
Удалить замену:
git replace -d <old_commit>
Что это даёт:
* тестирование альтернативной истории;
* анализ изменений без force push;
* эксперименты с графом коммитов.
Важно:
* замены действуют локально;
* не отправляются в remote по умолчанию;
* это инструмент для продвинутой диагностики.
git replace — вмешательство в отображение истории без её разрушения.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🧠 Git Show-Ref — список всех ссылок в репозитории
Базовое использование:
Только ветки:
Только теги:
Проверка существования ветки:
Когда полезно:
* диагностика «пропавшей» ветки;
* скрипты и CI;
* проверка ref перед операциями.
➡️ GitHub Ready | #урок
git show-ref выводит все ссылки: ветки, теги и другие ref-объекты с их hash.Базовое использование:
git show-ref
Только ветки:
git show-ref --heads
Только теги:
git show-ref --tags
Проверка существования ветки:
git show-ref --verify refs/heads/feature/login
Когда полезно:
* диагностика «пропавшей» ветки;
* скрипты и CI;
* проверка ref перед операциями.
show-ref — прямой доступ к карте ссылок Git.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
🔐 Git Update-Ref — управление ссылками вручную
Создать ветку:
Переместить ветку:
Удалить ref:
Особенности:
* не делает merge или проверок;
* напрямую меняет указатели;
* используется в скриптах и внутренних механизмах Git.
➡️ GitHub Ready | #мемы
git update-ref позволяет напрямую изменить, создать или удалить ref (ветку, тег). Это низкоуровневый инструмент.Создать ветку:
git update-ref refs/heads/feature/login <hash>
Переместить ветку:
git update-ref refs/heads/main <hash>
Удалить ref:
git update-ref -d refs/heads/old-feature
Особенности:
* не делает merge или проверок;
* напрямую меняет указатели;
* используется в скриптах и внутренних механизмах Git.
update-ref — контроль над ссылками без посредников.Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧪 Git Fsck — проверка целостности репозитория
Запуск проверки:
Полный вывод:
Что проверяет:
* битые или отсутствующие объекты;
* висячие (dangling) коммиты;
* некорректные ссылки.
Когда применять:
* подозрение на повреждение
* сбои диска;
* проблемы после ручных операций с историей.
➡️ GitHub Ready | #мемы
git fsck (file system check) проверяет объекты и ссылки на целостность. Используется для диагностики повреждений.Запуск проверки:
git fsck
Полный вывод:
git fsck --full
Что проверяет:
* битые или отсутствующие объекты;
* висячие (dangling) коммиты;
* некорректные ссылки.
Когда применять:
* подозрение на повреждение
.git;* сбои диска;
* проблемы после ручных операций с историей.
fsck — инструмент диагностики, а не повседневной работы.Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🧱 Git Cat-File — посмотреть объект Git напрямую
Посмотреть тип объекта:
Посмотреть содержимое:
Размер объекта:
Что можно увидеть:
* структуру коммита;
* дерево файлов;
* содержимое конкретного blob.
➡️ GitHub Ready | #урок
git cat-file показывает содержимое объектов: коммиты, деревья, blob. Это уровень ниже обычных команд.Посмотреть тип объекта:
git cat-file -t <hash>
Посмотреть содержимое:
git cat-file -p <hash>
Размер объекта:
git cat-file -s <hash>
Что можно увидеть:
* структуру коммита;
* дерево файлов;
* содержимое конкретного blob.
cat-file — способ увидеть, как Git хранит данные без абстракций.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🧬 Git Blame — кто и когда изменил строку
Базовое использование:
С указанием конкретного коммита:
Игнорирование коммитов форматирования:
Опции:
*
*
Blame помогает понять, кто и зачем изменял код, без ручного просмотра истории.
➡️ GitHub Ready | #Уроки
git blame показывает автора и коммит для каждой строки файла. Полезно для поиска источника багов.Базовое использование:
git blame file.js
С указанием конкретного коммита:
git blame HEAD~3 file.js
Игнорирование коммитов форматирования:
git blame --ignore-rev <hash> file.js
Опции:
*
-L 10,20 — ограничить строки;*
-p — подробный формат.Blame помогает понять, кто и зачем изменял код, без ручного просмотра истории.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
🧭 Git Merge — как использовать --squash для аккуратной истории
Пример:
Что происходит:
* изменения из ветки
* создаётся один коммит с итоговыми правками;
* история ветки
Когда полезно:
* чистая линейная история;
* подготовка PR;
* маленькие фичи без лишних коммитов.
➡️ GitHub Ready | #Уроки
git merge --squash объединяет изменения ветки без создания merge-коммита, превращая все коммиты ветки в один.Пример:
git checkout main
git merge --squash feature/login
git commit -m "feat: add login feature"
Что происходит:
* изменения из ветки
feature/login добавляются в индекс;* создаётся один коммит с итоговыми правками;
* история ветки
feature/login не сохраняется.Когда полезно:
* чистая линейная история;
* подготовка PR;
* маленькие фичи без лишних коммитов.
--squash — аккуратность без потери функционала.Please open Telegram to view this post
VIEW IN TELEGRAM
T-Sync Conf
Инженерные конференции часто выглядят одинаково: с докладами, слайдами, вопросами из зала и ощущение, что половина тебе никак не откликается
T-Sync Conf решает эту проблему через формат. 7 февраля Т-Технологии проведут масштабную конференцию для инженеров, где вместо одного общего маршрута — восемь технических контуров, из которых каждый может собрать свою траекторию: AI, Data, R&D, Security, UX/UI, Productivity, Observability, Platform.
Фокус не на рассказах, а на практике: демо-стенды с AI- и Data- платформами, инженерные диалоги с разбором кейсов, хакатон и публичная сборка сервиса. Плюс отдельные форматы для обсуждения UX/UI инструментов — от интерфейсов до дизайн-систем. Пройдет все на площадке TAU в Москве. Проход бесплатный, но рега обязательна
Ссылка
➡️ GitHub Ready | #урок
Инженерные конференции часто выглядят одинаково: с докладами, слайдами, вопросами из зала и ощущение, что половина тебе никак не откликается
T-Sync Conf решает эту проблему через формат. 7 февраля Т-Технологии проведут масштабную конференцию для инженеров, где вместо одного общего маршрута — восемь технических контуров, из которых каждый может собрать свою траекторию: AI, Data, R&D, Security, UX/UI, Productivity, Observability, Platform.
Фокус не на рассказах, а на практике: демо-стенды с AI- и Data- платформами, инженерные диалоги с разбором кейсов, хакатон и публичная сборка сервиса. Плюс отдельные форматы для обсуждения UX/UI инструментов — от интерфейсов до дизайн-систем. Пройдет все на площадке TAU в Москве. Проход бесплатный, но рега обязательна
Ссылка
Please open Telegram to view this post
VIEW IN TELEGRAM
🧮 Git Rev-List — список коммитов как инструмент для анализа
Базовое использование:
Количество коммитов в ветке:
Коммиты, которых нет в другой ветке:
Диапазон:
Когда применять:
* скрипты и CI;
* анализ расхождений веток;
* подсчёт изменений перед релизом.
➡️ GitHub Ready | #урок
git rev-list выводит список commit hash по заданному диапазону. Основа для многих внутренних команд Git.Базовое использование:
git rev-list HEAD
Количество коммитов в ветке:
git rev-list --count main
Коммиты, которых нет в другой ветке:
git rev-list main ^feature
Диапазон:
git rev-list main..feature
Когда применять:
* скрипты и CI;
* анализ расхождений веток;
* подсчёт изменений перед релизом.
rev-list — сырой список истории без форматирования.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥1
Нашёл для вас крутой репозиторий, в котором собрано около сотни готовых SQL запросов для PostgreSQL.👉 Увидел много полезностей — от получения и модификации данных до ускорения запросов и обслуживания баз данных.
Клик
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🧱 Git Rebase -i — управление историей коммитов вручную
Интерактивный rebase позволяет редактировать, объединять, менять порядок и удалять коммиты.
Запуск:
В списке доступны действия:
*
*
*
*
*
Изменить порядок — просто поменять строки местами.
Когда использовать:
* чистка истории перед PR;
* объединение WIP-коммитов;
* исправление структуры изменений.
➡️ GitHub Ready | #урок
Интерактивный rebase позволяет редактировать, объединять, менять порядок и удалять коммиты.
Запуск:
git rebase -i HEAD~5
В списке доступны действия:
*
pick — оставить;*
reword — изменить сообщение;*
edit — изменить содержимое;*
squash — объединить;*
drop — удалить.Изменить порядок — просто поменять строки местами.
Когда использовать:
* чистка истории перед PR;
* объединение WIP-коммитов;
* исправление структуры изменений.
rebase -i — инструмент контроля качества истории.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1