GitHub Ready | Git
6.16K subscribers
640 photos
74 videos
1 file
546 links
По всем вопросам: @AdilNow
Download Telegram
🧩 Git Archive — экспорт репозитория без истории

git archive создаёт архив проекта из конкретного коммита или ветки, без папки .git.

Создать zip архива текущей ветки:

git archive --format=zip HEAD > project.zip


Архивировать конкретную ветку:

git archive --format=tar main | gzip > main.tar.gz


Архивировать только поддиректорию:

git archive HEAD src/ > src.tar


Применение:

* деплой без истории;
* передача кода клиенту;
* CI/CD для сборок.

git archive — чистый код без лишней информации о репозитории.

➡️ GitHub Ready | #Уроки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🧠 Git Bisect — поиск коммита, сломавшего проект

git bisect использует бинарный поиск, чтобы определить, в каком коммите появилась ошибка.

Запуск:

git bisect start
git bisect bad # текущая версия с ошибкой
git bisect good <hash> # известный рабочий коммит


Git будет переключаться между коммитами.
После каждой проверки указываешь результат:

git bisect good
# или
git bisect bad


Завершить:

git bisect reset


Когда применять:

* баг появился давно;
* история длинная;
* вручную искать долго.

git bisect сокращает поиск проблемы с сотен коммитов до нескольких шагов.

➡️ GitHub Ready | #Уроки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Кайфы разработчикам игр — мега-коллекция open-source проектов

Когда разработчик задумывает новый игровой проект, первое, что приходит в голову — поиграть в аналоги и изучить их код.

👉 В репо Games on GitHub лежат тонны качественных open-source примеров игр и игровых проектов. Всё разбито по категориям и платформам.


Сслыка

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🗺 Git Log --graph — визуализация истории веток

git log --graph показывает структуру веток в виде ASCII-графа прямо в терминале.

Базовый вариант:

git log --graph


Практичный формат:

git log --oneline --graph --decorate --all


Что дают флаги:

--graph — визуальные ветвления;
--oneline — компактный вывод;
--decorate — теги и ветки;
--all — все ветки.

Когда использовать:

• анализ merge;
• проверка структуры истории;
• понимание, где произошёл rebase.

--graph — быстрый способ увидеть архитектуру истории Git.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🔍 Git Cherry-Pick — перенос конкретного коммита

git cherry-pick применяет один выбранный коммит из другой ветки в текущую.

Перенести коммит:

git cherry-pick <hash>


Несколько подряд:

git cherry-pick <hash1> <hash2>


Диапазон:

git cherry-pick A^..B


При конфликте:

git add .
git cherry-pick --continue


Отмена:

git cherry-pick --abort


Когда применять:

* нужен один фикс без merge всей ветки;
* перенос hotfix в production;
* синхронизация между релизными ветками.

cherry-pick — точечный перенос изменений без лишней истории.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⚡️ clearcam — превращаем старый iPhone или RTSP-камеру в умную систему безопасности с AI

Обычная камера становится локальной AI-системой наблюдения — без облаков и подписок.

Возможности:

* 🖱 Поддержка RTSP-камер и старых iPhone
* 🖱 Детекция событий с помощью AI (не просто запись 24/7)
* 🖱 Получение стримов и уведомлений
* 🖱 Локальная работа без облачных сервисов

По сути: сам себе NVR + AI-инференс на Python

Запуск:

git clone https://github.com/roryclear/clearcam.git
cd clearcam
pip install -r requirements.txt
python3 clearcam.py


* Опционально: вводишь Clearcam Premium UserID для стримов и уведомлений
* Открываешь localhost:8080 в браузере — и готово

⚡️ Для ускорения работы:

BEAM=2 python3 clearcam.py


Идеально для:
дома
гаража
мастерской
офиса
экспериментов с AI и computer vision

🔐 Старая камера — не мусор, а потенциальная AI-система безопасности

GitHub / : clearcam

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4
add-skill — единый менеджер Skills для AI-инструментов кодинга

Количество AI-тулзов растёт, у каждого свои директории и форматы конфигов для Skills. В результате — хаос с путями, рассинхронизация и ручное обновление.

Команда Vercel Labs выложила в open source инструмент add-skill, который унифицирует управление скиллами по принципу npm.

Идея

— берёшь skill-репозиторий с GitHub
— одной командой устанавливаешь его
— инструмент сам определяет, какие AI-агенты установлены
— конфиги автоматически раскладываются по нужным директориям

Поддержка

Сейчас add-skill работает с 13 популярными инструментами, включая:

OpenCode
Claude Code
Codex
Cursor

Skills-маркет

Доступен каталог готовых Skills:
— описание
— количество установок
— быстрая установка через копирование команды

Для тех, кто использует несколько AI-кодинг инструментов одновременно, add-skill решает проблему рассинхронизации и ручного менеджмента конфигов.

Cсылка GitHub
3👍1
🤩 Шаблон для запуска локальных ИИ в одном пакете

Проект из репо Self-hosted AI Package представлен в виде файла Docker-compose, который уже настроен для сети и диска.

👉 Он предназначен для запуска рабочих процессов локальных ИИ в одном пакете и его можно настроить под конкретные задачи.


Ссылка

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
4
⚙️ Git Reflog — восстановление потерянных коммитов

git reflog показывает историю перемещений HEAD, даже если коммиты исчезли из ветки.

Просмотр истории:

git reflog


Найти нужный хеш:

git reflog --oneline


Вернуться к состоянию:

git reset --hard <hash>


Создать ветку из прошлого состояния:

git checkout -b restore-branch <hash>


Когда применять:
• случайный reset --hard;
• удаление ветки;
• потерянный commit после rebase.

reflog хранит локальную историю действий — пока объект не удалён сборщиком мусора, его можно вернуть.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🧹 Как удалить ветки, которых больше нет на сервере?

Со временем локальный список веток забивается «мусором» — ветками, которые уже слиты и удалены из удаленного репозитория (origin). Обычный git pull их не чистит.

Задача:

* Синхронизировать список веток с сервером.
* Удалить локальные ссылки на несуществующие удаленные ветки.

Решение:

Используем команду fetch с флагом --prune (или -p), которая подчистит все устаревшие ссылки:

# Очистить ссылки на удаленные ветки
git fetch --prune

# Сделать это поведение автоматическим для всех будущих pull
git config --global fetch.prune true



Что это дает?
Команда удаляет только "remote-tracking" ветки (те, что видны как origin/branch-name). Это делает вывод git branch -a чистым и актуальным, избавляя тебя от путаницы в истории.

🔥 — если не знал про автоматическую чистку
🤝 — если чистишь репозиторий вручную

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤝2👍1
📦 Как временно спрятать изменения без коммита? (Git Stash)

Бывает, что ты в разгаре работы, и тут прилетает срочная задача — нужно переключить ветку. Но код еще не готов для коммита, а терять наработки нельзя.

Задача:

* Сохранить текущие правки во временном хранилище.
* Вернуть рабочую директорию к чистому состоянию для переключения веток.

Решение:

Используем команду stash. Она как «карман», куда можно быстро положить изменения:

# Спрятать все текущие изменения (staged и unstaged)
git stash

# Спрятать изменения и дать им имя (чтобы не запутаться)
git stash save "Работа над хедером"

# Посмотреть список всех "заначек"
git stash list

# Вернуть последние изменения и удалить их из хранилища
git stash pop

# Применить изменения, но оставить их в списке stash
git stash apply



Почему это удобно?
Тебе не нужно создавать «мусорные» коммиты вроде "temp" или "WIP", которые потом придется склеивать. Ты просто откладываешь работу в сторону и возвращаешься к ней, когда удобно.

🔥 — если постоянно пользуешься «заначкой»
🤝 — если предпочитаешь делать временные коммиты

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝31
🔍 Как найти потерянный коммит? (Git Reflog)

Случайно удалил ветку, сделал reset --hard не туда или потерял важный коммит после неудачного ребейза? В Git почти ничего не исчезает бесследно, пока жива папка .git.

Задача:

* Восстановить изменения после "необратимых" команд.
* Найти хэш коммита, на который больше не ссылается ни одна ветка.

Решение:

Команда reflog показывает историю всех передвижений указателя HEAD. Это буквально «журнал посещений» твоего репозитория:

# Посмотреть историю всех действий
git reflog

# Найти нужное состояние (например, HEAD@{5}) и вернуть его в новую ветку
git checkout -b recovered-branch HEAD@{5}

# Или просто откатиться к нему
git reset --hard HEAD@{5}



Как это работает?
Git записывает каждое изменение состояния: переключение веток, коммиты, мержи и даже отмены. Если ты что-то «стер», reflog покажет хэш того состояния, которое было за секунду до ошибки.

🔥 — если reflog спасал тебе жизнь
🤝 — если еще ни разу не терял коммиты
🔥3🤝1
🔍 Как найти коммит, который сломал код? (Git Bisect)

Бывает, что проект перестал собираться или вылез баг, но никто не знает, когда именно это случилось. Если в истории сотни коммитов, искать вручную — долго. На помощь приходит бинарный поиск.

Задача:

* Максимально быстро найти конкретный коммит, внесший ошибку.
* Автоматизировать процесс поиска.

Решение:

Команда bisect делит историю пополам, пока не вычислит «виновника»:

# Начинаем процесс
git bisect start

# Помечаем текущее состояние как плохое
git bisect bad

# Помечаем старый хэш (или тег), где всё точно работало, как хорошее
git bisect good <commit-hash>

# Git переключит тебя на коммит посередине. Проверь код:
# Если баг есть: git bisect bad
# Если бага нет: git bisect good

# Когда Git найдет коммит, заверши поиск:
git bisect reset



Почему это круто?
Вместо проверки 100 коммитов по порядку, тебе понадобится всего около 7 шагов (так работает бинарный поиск). Это самый эффективный способ диагностики в больших проектах.

🔥 — если знал про этот метод
🤝 — если ищешь баги «руками» через лог

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤝1
🧩 Как объединить несколько коммитов в один? (Git Squash)

Бывает, что за день ты наплодил кучу мелких коммитов вроде "fix", "typo", "debug". В историю проекта такое пускать стыдно — лучше объединить их в один логичный и красивый коммит перед мержем.

Задача:

* Навести порядок в истории ветки.
* Превратить цепочку мелких правок в один осмысленный коммит.

Решение:

Используем интерактивный ребейз (interactive rebase) для последних N коммитов (например, трех):

# Запускаем интерактивный режим для 3 последних коммитов
git rebase -i HEAD~3



В открывшемся текстовом редакторе ты увидишь список коммитов. Замени слово pick на squash (или просто s) у тех коммитов, которые нужно «влить» в предыдущий:

pick e3a1b2c Добавил логику корзины
squash a5b6c7d fix: исправил опечатку
squash 9f8e7d6 debug: удалил console.log



После сохранения Git предложит тебе отредактировать финальное сообщение для объединенного коммита.

Почему это важно?
Чистая история (Git History) — это признак профессионализма. Коллегам будет гораздо проще делать Code Review, если они увидят одну четкую задачу вместо десяти правок в одну строчку.

🔥 — если всегда сквашиваешь перед мержем
🤝 — если оставляешь историю как есть

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31🤝1
📁 Как закоммитить только часть файла? (Git Add -p)

Бывает, что ты внес в файл сразу несколько правок: одна чинит баг, а другая — просто рефакторинг. Хорошим тоном считается разделять их на разные коммиты, чтобы история была понятной.

Задача:

* Выбрать конкретные строки или блоки кода внутри одного файла для коммита.
* Оставить остальные изменения в статусе "unstaged" для следующего раза.

Решение:

Используем флаг --patch (или -p) при добавлении файлов в индекс:

# Git покажет каждый кучок изменений и спросит, что с ним делать
git add -p path/to/file.txt



Основные команды в режиме патча:

* y (yes) — добавить этот блок в индекс.
* n (no) — пропустить этот блок.
* s (split) — разбить блок на еще более мелкие части.
* q (quit) — выйти и сохранить то, что уже выбрано.

Почему это полезно?
Это заставляет тебя еще раз просмотреть свой код перед коммитом (само-ревью). Ты точно не закоммитишь лишние console.log или временные заметки, которые случайно остались в файле.

🔥 — если коммитишь атомарно по кусочкам
🤝 — если всегда добавляешь файл целиком через git add .

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝5🔥1
🏷️ Как работать с тегами (Git Tag)

Коммиты идут бесконечным списком, и в них легко потеряться. Чтобы зафиксировать важные точки в истории проекта — например, релиз версии или крупное обновление — используются теги.

Задача:

* Отметить конкретный коммит как важную веху (v1.0, v2.4.0).
* Быстро возвращаться к стабильным версиям кода.

Решение:

Создаем «аннотированный» тег (с сообщением и автором), так как это стандарт для релизов:

# Создать тег для текущего коммита
git tag -a v1.0.0 -m "Релиз первой версии"

# Посмотреть список всех тегов
git tag

# Отправить теги на удаленный сервер (по умолчанию push их не берет)
git push origin --tags

# Переключиться на код конкретной версии
git checkout v1.0.0



В чем разница с ветками?
Ветка — это указатель, который двигается вперед с каждым новым коммитом. Тег — это статичная метка. Он «прилипает» к конкретному хэшу и никогда не меняется. Это идеальный способ заморозить состояние кода для истории.

🔥 — если помечаешь релизы тегами
🤝 — если ориентируешься только по веткам и датам

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
🔍 Как найти коммит по тексту в коде? (Git Grep)

Бывает, что ты помнишь название удаленной функции или старый API-ключ, но не знаешь, в каком коммите они были удалены или изменены. Листать git log можно бесконечно, но есть способ быстрее.

Задача:

* Найти все упоминания строки во всей истории проекта.
* Понять, когда конкретный текст появился или исчез из кода.

Решение:

Используем команду grep, встроенную в Git. Она ищет гораздо быстрее обычного поиска по файлам, так как работает напрямую с базой данных Git:

# Искать текст во всех файлах в текущем состоянии
git grep "название_функции"

# Найти коммиты, в которых эта строка была добавлена или удалена (History Search)
git log -S "название_функции"

# Посмотреть изменения (diff) для каждого найденного случая
git log -S "название_функции" -p



Почему это удобно?
Флаг -S (так называемый "Pickaxe") ищет именно изменения в количестве вхождений строки. Если функция была добавлена — она попадет в поиск. Если была полностью удалена — тоже. Это незаменимо при расследовании того, "куда делся этот кусок кода".

🔥 — если знал про «кирку» (Pickaxe)
🤝 — если ищешь через Ctrl+F по всему проекту

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤝2
📋 Как создать свои команды в Git? (Git Aliases)

Если тебе надоело каждый раз вводить длинные команды вроде git checkout или git commit -v, ты можешь создать короткие псевдонимы (алиасы). Это экономит кучу времени и делает работу в терминале приятнее.

Задача:

* Сократить часто используемые команды до 2–3 букв.
* Создать сложные цепочки команд под одним коротким именем.

Решение:

Алиасы настраиваются через git config. Вот самые популярные и полезные настройки:

# Сокращаем стандартные команды
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status

# Создаем крутой лог в виде дерева (красивый вывод)
git config --global alias.lg "log --graph --oneline --all"

# Алиас для отмены последнего коммита с сохранением изменений
git config --global alias.unstage "reset HEAD --"



Как это использовать?
Теперь вместо git checkout master ты пишешь просто git co master. А команда git lg покажет тебе наглядную структуру всех веток и коммитов прямо в консоли.

Почему это важно?
Автоматизация рутины — ключ к продуктивности. Ты можешь настроить Git «под себя», превратив его в удобный инструмент, который понимает тебя с полуслова.

🔥 — если уже настроил свои алиасы
🤝 — если по старинке пишешь команды полностью

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🤝2
🛠 Как изменить сообщение последнего коммита? (Git Amend)

Опечатался в тексте коммита или забыл добавить один файл в индекс? Не нужно делать новый «fix»-коммит. Можно просто исправить последний, пока он еще не улетел на сервер.

Задача:

* Исправить текст последнего сообщения.
* Добавить забытые изменения в предыдущий коммит.

Решение:

Используем флаг --amend. Он берет текущее состояние индекса и «склеивает» его с последним коммитом, позволяя заодно поменять описание:

# Если нужно просто изменить текст сообщения:
git commit --amend -m "Новое правильное сообщение"

# Если забыл добавить файл:
git add forgotten_file.js
git commit --amend --no-edit



> Важно: Используй это только для локальных коммитов. Если ты уже сделал push, amend изменит хэш коммита, и при следующей отправке возникнет конфликт историй.

Почему это полезно?
История остается чистой, без лишнего шума из мелких правок и исправлений опечаток. Твой репозиторий выглядит аккуратно, а коллеги видят только готовый результат.

🔥 — если постоянно исправляешь «на лету»
🤝 — если создаешь новые коммиты для правок

➡️ GitHub Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8