GitHub Ready | Git
6.16K subscribers
641 photos
74 videos
1 file
548 links
По всем вопросам: @AdilNow
Download Telegram
📦 Git Submodule — подключение одного репозитория к другому

git submodule позволяет использовать внешний репозиторий как часть основного проекта, фиксируя конкретную версию кода.

Добавление сабмодуля:

git submodule add https://github.com/lib/example.git libs/example


Инициализация и загрузка:

git submodule update --init --recursive


Обновление сабмодулей:

git submodule update --remote

Важно помнить:
• сабмодуль — это отдельный Git-репозиторий;
• в основном проекте хранится ссылка на конкретный коммит;
• изменения в сабмодуле нужно коммитить отдельно.

Submodule — инструмент для строгого контроля зависимостей, а не для удобства.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
📊 Git Cherry-pick — перенос одного коммита без всей ветки

git cherry-pick позволяет взять конкретный коммит и применить его в другой ветке, не делая merge или rebase всей истории.

Базовое использование:

git cherry-pick <hash>


Перенос диапазона коммитов:

git cherry-pick <hash1>..<hash2>


Если возник конфликт:

git cherry-pick --continue


Отмена операции:

git cherry-pick --abort


Когда полезно:
• срочный хотфикс в main;
• перенос одной фичи без лишних изменений;
• аккуратная работа с релизными ветками.

cherry-pick — точный инструмент, требует аккуратности.

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

Git hooks — это скрипты, которые автоматически запускаются при определённых действиях: коммит, push, merge и т.д. Используются для контроля качества и автоматизации.

Где находятся:

.git/hooks/


Примеры хуков:
• pre-commit — запуск линтера, тестов;
• commit-msg — проверка формата сообщения;
• pre-push — блокировка push при ошибках.

Простейший pre-commit:

#!/bin/sh
npm test || exit 1


Важно:
• хуки не коммитятся по умолчанию;
• для команды используют шаблоны или husky;
• экономят время и ловят ошибки раньше CI.

Git hooks — локальный CI до настоящего CI.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🧬 Detached HEAD — что это и почему это нормально

Состояние detached HEAD возникает, когда ты переключаешься не на ветку, а на конкретный коммит.

Пример:

git checkout a1b2c3d


Что происходит:
• HEAD указывает прямо на коммит;
• новые коммиты не принадлежат ни одной ветке;
• при переключении ветки они могут «потеряться».

Как сохранить работу:

git switch -c fix-from-old-commit


Когда это полезно:
• анализ старого состояния проекта;
• тестирование прошлых версий;
• быстрые эксперименты без влияния на ветки.

Detached HEAD — это режим просмотра и экспериментов, а не ошибка.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
4
📈 Git Squash — объединение коммитов перед merge

Squash позволяет превратить несколько рабочих коммитов в один аккуратный перед добавлением в основную ветку.

Через интерактивный rebase:

git rebase -i HEAD~3


В списке:
• первый коммит — pick;
• остальные меняешь на squash или s.

После этого:
• объединяются изменения;
• редактируется одно итоговое сообщение коммита;
• история становится чище.

Когда использовать:
• много мелких «fix», «wip»;
• подготовка PR;
• требования к чистой истории.

Squash — порядок в истории без потери смысла изменений.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2🔥1
🧾 Conventional Commits — зачем нужен единый формат коммитов

Conventional Commits — соглашение о структуре сообщений коммитов, которое упрощает навигацию по истории и автоматизацию релизов.

Формат:

type(scope): краткое описание


Примеры:

feat(auth): add token refresh
fix(ui): fix modal closing bug
refactor(api): simplify handlers


Что это даёт:
• читаемая история;
• автоматический changelog;
• корректный semver;
• проще код-ревью.

Conventional Commits — фундамент для масштабируемой разработки.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🗂 Git Worktree — несколько рабочих копий одного репозитория

git worktree позволяет иметь несколько рабочих директорий для одного репозитория без лишних clone.

Добавить новую рабочую копию:

git worktree add ../hotfix main


Список worktree:

git worktree list


Удаление:

git worktree remove ../hotfix


Когда полезно:
• параллельная работа над фичей и хотфиксом;
• тестирование разных веток одновременно;
• экономия места и времени.

worktree — альтернатива постоянным stash и переключениям веток.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
🧭 Git HEAD — что это и как он управляет репозиторием

HEAD — указатель на текущее состояние репозитория. Обычно он указывает на ветку, а ветка — на последний коммит.

Проверить, куда указывает HEAD:

cat .git/HEAD


Типичные случаи:
• HEAD -> main — нормальная работа;
• HEAD -> feature — работа в фиче-ветке;
• HEAD detached — HEAD указывает прямо на коммит.

Перемещение HEAD:

git checkout HEAD~1


Важно:
• коммиты всегда создаются там, куда указывает HEAD;
• понимание HEAD = меньше «магии» в Git;
• большинство ошибок — это потерянный контекст HEAD.

Git становится простым, когда ясно, куда смотрит HEAD.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🧩 Git Reset — чем отличаются --soft, --mixed, --hard

git reset перемещает HEAD и по-разному влияет на индекс и рабочую директорию. Ошибки здесь самые дорогие, поэтому важно понимать разницу.

--soft

git reset --soft HEAD~1


• сдвигает HEAD;
• индекс и файлы не трогает;
• коммит «отменён», изменения готовы к новому коммиту.

--mixed (по умолчанию)

git reset HEAD~1


• сдвигает HEAD;
• очищает индекс;
• файлы остаются изменёнными.

--hard

git reset --hard HEAD~1


• сдвигает HEAD;
• очищает индекс;
• удаляет изменения в файлах.

reset — инструмент контроля, а не отката «наугад».

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1
💡 Git Diff — сравниваем изменения на лету

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

Примеры использования:
• Изменения в рабочей директории перед коммитом:

git diff


• Изменения между индексом и последним коммитом:

git diff --cached


• Сравнение двух веток:

git diff main..feature


• Конкретного файла:

git diff HEAD~1 README.md


💡 Полезно для проверки работы перед коммитом и анализа истории без открытия внешних инструментов.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
5
🧠 Git Config — управление поведением Git

git config отвечает за настройки Git: от имени автора до стратегий слияния. Понимание уровней конфигурации избавляет от неожиданных эффектов.

Уровни конфигурации:
• --system — для всей системы;
• --global — для пользователя;
• --local — для конкретного репозитория.

Примеры:

git config --global user.name "Nadir"
git config --global user.email "mail@example.com"


Посмотреть все активные настройки:

git config --list --show-origin


Удалить параметр:

git config --unset user.name


git config — это не разовая команда, а фундамент стабильной работы с Git.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
За это видео мне заплатили 20.000 рублей, но его сделало ИИ 😎

Никакого волшебства. Достаточно владеть ИИшками хотя бы на 6/10, чтобы превратить это в полноценный источник дохода.

Так что если хочешь разобраться, занять место в свежей нише и делать там от 250к в месяц — тебе в Tech Lab

Тут авторы реально шарят за IT-стартапы и ИИ-разработки, так что сохраняйте — будет куча интересного, даже если ни разу не пользовались ИИ: @TechLab
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4🔥2
🔄 Git Pull — fetch + merge или fetch + rebase

git pull обновляет вашу ветку с удалённого репозитория, но стратегия слияния влияет на историю.

По умолчанию:

git pull


• делает fetch + merge;
• создаёт merge-коммит, если есть новые изменения.

Чтобы сохранить линейную историю:

git pull --rebase


• переносит ваши коммиты поверх удалённых;
• история остаётся чистой.

Можно настроить по умолчанию:

git config --global pull.rebase true


💡 Понимание стратегии pull помогает избежать «грязных» merge-коммитов и конфликтов в команде.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🏷 Git Tag — фиксация релизов и важных состояний

git tag используется для пометки конкретных коммитов: релизы, версии, контрольные точки.

Типы тегов:
• lightweight — простой указатель;
• annotated — полноценный объект с описанием и автором.

Создание:

git tag v1.0.0
git tag -a v1.1.0 -m "release 1.1.0"


Просмотр тегов:

git tag
git show v1.0.0


Отправка тегов в remote:

git push origin v1.0.0
git push origin --tags


Использование:
• релизы и hotfix;
• CI/CD;
• точная навигация по версиям.

Теги — это якоря стабильности в истории Git.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1
📂 Git Archive — экспорт проекта без .git

git archive позволяет собрать архив из репозитория без истории и служебных файлов. Удобно для передачи кода или деплоя.

Создание архива:

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


Экспорт конкретной ветки:

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


Экспорт поддиректории:

git archive HEAD src/ > src.tar


Особенности:
• без папки .git;
• ровно то состояние, что в коммите;
• подходит для CI и релизов.

git archive — чистый код без лишнего контекста.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3
🧪 Git Show — просмотр одного коммита без шума

git show позволяет быстро посмотреть содержимое конкретного коммита: изменения, автора и сообщение.

Базовое использование:

git show <hash>


Полезные варианты:
• Только изменения файлов:

git show --stat <hash>


• Конкретный файл из коммита:

git show <hash>:src/app.js


• Без diff, только сообщение:

git show --no-patch <hash>


Когда использовать:
• анализ правок;
• код-ревью;
• быстрый контекст без git log.

git show — минимализм для работы с историей.

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

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 — ускорение работы без плагинов и магии.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🌿 Git Clean + Dry Run — безопасная очистка проекта

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

Проверка без удаления:

git clean -n


Удаление файлов:

git clean -f


Удаление файлов и директорий:

git clean -fd


Игнорирование .gitignore:

git clean -fx


💡 Использование -n перед -f спасает от случайной потери нужных файлов.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
🔁 Git Fetch — обновление без вмешательства в код

git fetch загружает изменения из удалённого репозитория, но не трогает рабочую директорию и текущую ветку.

Базовое использование:

git fetch


Что происходит:
• обновляются ссылки origin/*;
• локальный код не меняется;
• можно спокойно анализировать изменения.

Сравнение перед слиянием:

git diff main origin/main


Обновление всех remote:

git fetch --all


fetch — контроль и обзор перед любыми изменениями.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🧯 Git Revert — безопасный откат в публичных ветках

git revert отменяет изменения через новый коммит, не переписывая историю. Это ключевое отличие от reset.

Откат одного коммита:

git revert <hash>


Откат диапазона:

git revert <hash1>..<hash2>


Если возник конфликт:

git revert --continue


Почему это важно:
• история не ломается;
• безопасно для main / develop;
• подходит для командной работы.

revert — правильный способ отмены, когда коммиты уже в общем доступе.

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Как Git хранит твои данные: пошаговая иллюстрация 👩‍💻

➡️ GitHub Ready | #урок
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2