October 16, 2025

Основы Git. BASHNYA_EDU

Навигация:

  1. Что такое Git ?
  2. Конфликты в Git.
  3. Базовые команды.
  4. Важно знать!
  5. Заключение.

🚀 Введение в Git для начинающих


1. Что такое Git?

Git — это система контроля версий. Она позволяет нескольким разработчикам работать над одним проектом, не мешая друг другу (нуу... почти 😅).

👨‍💻 Командная работа без хаоса: зачем нужен Git?

Представим, что мы с Климом, Адилем и Димой работаем вместе над одним проектом.

Каждый делает свои задачи:
— кто-то пишет новую фичу
— кто-то чинит баги
— кто-то обновляет дизайн...

Но как объединять все эти изменения? Что делать — каждый раз пересылать друг другу архивы с проектом по почте или в чат?

Типа: «Вот моя версия проекта с кнопкой, смотри v3_final_really_final.zip» 😅
Это ужасно неудобно и быстро превращается в хаос версий.


☁️ Есть решение — использовать общее облачное хранилище

Сделал фичу => загрузил её в одно централизованное место.
Коллеги загрузили себе актуальные изменения и продолжили работу.

Это и есть суть работы с Git. Каждый участник команды может:

🔽 скачать (клонить) свежую версию проекта к себе на компьютер;
🔼 отправить (запушить) изменения обратно на сервер;
🔁 обновить локальную версию до актуальной с сервера.


2. Как же я могу всё-таки помешать Климу ?

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

Эти изменения пока есть только у меня локально.
А теперь я возвращаюсь в цивилизацию, подключаю интернет и пытаюсь:

  • Обновить (pull) удалённый репозиторий,
  • Запушить свои изменения.

И тут 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 БИНАРНЫЕ ФАЙЛЫ

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. Главное — не бойтесь практиковаться: пробуйте разные команды, разбирайтесь, что и почему происходит, даже если что-то пошло не так.

Поверьте, ошибки — это часть процесса. В начале своей карьеры я сам попадал в курьёзные ситуации: бывало, случайно удалял работу нескольких недель и приходилось всё переписывать с нуля 😅

Так что учитесь, экспериментируйте и обязательно делайте бэкапы 😉

Пишите в комменты, что осталось непонятно, может есть какие-то замечания - открыт к конструктивной критике)

Дополнительные материалы: