Основы Git. BASHNYA_EDU
🚀 Введение в Git для начинающих
1. Что такое Git?
Git — это система контроля версий. Она позволяет нескольким разработчикам работать над одним проектом, не мешая друг другу (нуу... почти 😅).
👨💻 Командная работа без хаоса: зачем нужен Git?
Представим, что мы с Климом, Адилем и Димой работаем вместе над одним проектом.
Каждый делает свои задачи:
— кто-то пишет новую фичу
— кто-то чинит баги
— кто-то обновляет дизайн...
Но как объединять все эти изменения? Что делать — каждый раз пересылать друг другу архивы с проектом по почте или в чат?
Типа: «Вот моя версия проекта с кнопкой, смотри v3_final_really_final.zip» 😅
Это ужасно неудобно и быстро превращается в хаос версий.
☁️ Есть решение — использовать общее облачное хранилище
Сделал фичу => загрузил её в одно централизованное место.
Коллеги загрузили себе актуальные изменения и продолжили работу.
Это и есть суть работы с Git. Каждый участник команды может:
🔽 скачать (клонить) свежую версию проекта к себе на компьютер;
🔼 отправить (запушить) изменения обратно на сервер;
🔁 обновить локальную версию до актуальной с сервера.
2. Как же я могу всё-таки помешать Климу ?
Допустим, я устал от всего и улетел на необитаемый остров без интернета.
Но я разработчик до мозга костей — и продолжаю пилить фичи даже там 🌴💻
Эти изменения пока есть только у меня локально.
А теперь я возвращаюсь в цивилизацию, подключаю интернет и пытаюсь:
И тут Git мне говорит: ❌ КОНФЛИКТ!
А всё просто. Пока ты отдыхал, твой коллега Клим тоже не терял времени и случайно взял задачу из того же модуля, что и ты.
И вот вы оба работали в одном и том же файле, и оба изменили... 68-ю строчку!
Было: "ААААА ПОЖАР. ГОРИТ ПЕРВЫЙ ЭТАЖ" Клим поменял на: "Всё хорошо, я потушил" Ты написал: "Я потушил, но кажется, чердак ещё горит"
Что делать git ? Кому верить? Тебе или Климу?
Ответ простой: Git не принимает решение за тебя. Он просто сообщает:
"У вас тут конфликт, разберитесь как-то сами уже, пожалуйста."
Я связываюсь с Климом, созваниваемся, обсуждаем ситуацию.
Вместе решаем, что версия с тлеющим чердаком более реалистична на текущий момент 🔥🏠
Я вручную редактирую файл, оставляю нужную строку, сохраняю изменения, коммичу — и уже после этого пушу на сервер.
Теперь ваша команда снова в синхроне 🫱🏼🫲🏽
3. Команды Git
git init
Создаёт новый локальный репозиторий в текущей папке.
git clone <url>
Клонирует удалённый репозиторий (например, с GitHub) на твой компьютер.
git status
Показывает текущее состояние: что изменено, что готово к коммиту, что нет.
git log
Показывает историю коммитов — кто, когда и что менял.
💾 Работа с файлами и изменениями
git add <имя_файла>
Добавляет конкретный файл в индекс (готовит его к коммиту).
git add .
Добавляет все изменённые файлы в текущей папке.
git commit -m "Твой комментарий"
Сохраняет изменения в истории проекта. Комментарий — обязателен.
git diff
Показывает различия между текущими изменениями и последним коммитом.
🔁 Работа с удалённым репозиторием
git push
Отправляет твои коммиты на удалённый сервер (например, в GitHub).
git pull
Забирает свежие изменения с сервера и сливает их с твоей локальной веткой.
git fetch
Забирает изменения с сервера, но не сливает — просто обновляет информацию.
git branch -a
Показывает список всех веток в проекте.
git branch <имя_ветки>
Создаёт новую ветку, но не переключает на неё.
git checkout <имя_ветки>
Переключается на другую ветку.
git checkout -b <имя_ветки>
Создаёт новую ветку и сразу переключается на неё.
git merge <имя_ветки>
Сливает указанную ветку в текущую (может вызвать конфликт, если были пересечения).
💥 Работа с конфликтами и отменой
git status
Помогает понять, какие файлы конфликтуют при слиянии.
git add <имя_файла>
После ручного разрешения конфликта — добавь файл, чтобы завершить слияние.
git commit
Заверши слияние после add, если был конфликт.
git reset --hard
❗️ Полностью откатывает все незакоммиченные изменения — будь осторожен!
git revert <хеш_коммита>
Создаёт новый коммит, отменяющий конкретный коммит — без удаления истории.
4. ВАЖНО ЗНАТЬ⚠️
1️⃣ Git не хранит каждую версию файла отдельно
Многие думают, что Git — это как Google Диск: мол, каждый раз, когда вы что-то коммитите, Git делает полную копию всех файлов проекта 🤷♂️
🔍 Как работает Git:
— Git сохраняет снимок (snapshot) проекта в момент коммита
— Если файл не менялся, Git просто ссылается на предыдущую версию
— Если файл изменился, Git сохраняет только разницу (дельту)
Это делает Git очень быстрым и лёгким, особенно для текстовых файлов (а код — это как раз текст).
2️⃣ ❌ НЕ ГРУЗИТЕ В GIT БИНАРНЫЕ ФАЙЛЫ
— .exe, .mp4, .zip, .psd, .docx, .pdf, .iso и другие бинарные файлы
— Огромные файлы больше 100 МБ (GitHub вообще такие пушить не даёт)
— Сгенерированные файлы: бандлы, билды, кэш, временные и т.п.
— Git не может "сравнивать" такие файлы построчно
— Он будет каждый раз хранить целый файл, даже если изменился 1 байт
— Репозиторий разрастается и тормозит
— Труднее работать в команде, сложнее откатывать изменения
— Добавляйте такие файлы в .gitignore
— Используйте внешние хранилища: Google Drive, Яндекс.Диск, Git LFS (если очень надо)
3️⃣ "Закоммичу всё и разберусь потом"
Плохая идея. НЕ РАЗБЕРЁТЕСЬ! . Делайте небольшие, логические коммиты с осмысленными сообщениями.
Пример хорошего сообщения:
git commit -m "Fix: кнопка 'Сохранить' не работала на Safari"
4️⃣ "Моя ветка называется test123-final-bugfix-1"
Давайте веткам понятные и читаемые названия:
✅ feature/auth-login
✅ bugfix/cart-total-price
✅ hotfix/missing-logo
5. ✨ Последнее напутствие
Этих базовых знаний более чем достаточно, чтобы уверенно начать работу с Git. Главное — не бойтесь практиковаться: пробуйте разные команды, разбирайтесь, что и почему происходит, даже если что-то пошло не так.
Поверьте, ошибки — это часть процесса. В начале своей карьеры я сам попадал в курьёзные ситуации: бывало, случайно удалял работу нескольких недель и приходилось всё переписывать с нуля 😅
Так что учитесь, экспериментируйте и обязательно делайте бэкапы 😉
Пишите в комменты, что осталось непонятно, может есть какие-то замечания - открыт к конструктивной критике)