Основные понятия Git

Репозиторий (repository)

Репозиторий — это папка, в которой Git отслеживает все изменения файлов.
Он хранит всю историю проекта: все коммиты, ветки, настройки.

Создать репозиторий можно в любой папке:

git init

После этой команды в папке появляется скрытая папка .git — именно там Git хранит всю информацию.
Не удаляйте её — без неё репозиторий перестанет работать.

Пример:
Вы создаёте мобильное приложение на React Native. Папка MyMobileApp/ становится репозиторием — Git будет следить за всеми изменениями в файлах App.js, src/components/Button.js, package.json, ios/ и android/.


Коммит (commit)

Коммит — это сохранённое состояние проекта на определённый момент.
Это как снимок экрана вашего кода, который вы можете вернуть в любое время.

Каждый коммит имеет уникальный хеш (например, a1b2c3d4) и сообщение, описывающее, что было изменено.

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

git add src/components/LoginButton.js
git commit -m "Добавил кнопку входа с анимацией"
  • git add — выбирает изменения для сохранения.
  • git commit — фиксирует их как единое целое.

Важно: коммит — это не просто сохранение файла. Это логическая единица изменений.
Хороший коммит делает одну вещь и говорит, что именно он сделал.

Пример плохого коммита:
"fixed stuff" — непонятно, что исправлено.

Пример хорошего коммита:
"Исправил баг: кнопка входа не реагировала на тач в Android" — ясно, понятно, воспроизводимо.


Ветка (branch)

Ветка — это изолированная линия разработки.
По умолчанию при создании репозитория создаётся ветка main.

Вы можете создавать новые ветки для работы над новой функцией, исправлением бага или экспериментом — и не мешать основной версии приложения.

Пример:

git branch feature/login-animation
git switch feature/login-animation

Теперь вы работаете в ветке feature/login-animation.
Все изменения — только здесь.
Когда функция готова — вы объедините её с main.

Это позволяет:

  • Не ломать рабочую версию приложения.
  • Параллельно работать над несколькими задачами.
  • Легко откатиться, если что-то пошло не так.

Пример сценария:
Вы добавляете анимацию при входе в приложении.
Другой разработчик работает над авторизацией через Google.
Оба работают в своих ветках — никаких конфликтов до момента слияния.


Статус файлов: tracked, modified, staged, untracked

Git отслеживает файлы по четырём состояниям. Понимание этих состояний — ключ к работе с Git.

Состояние Что значит Пример
untracked Файл новый, Git его ещё не видел Вы создали src/screens/AuthScreen.js — он пока не в репозитории
tracked Файл уже был добавлен в репозиторий ранее App.js уже коммитился — он отслеживается
modified Файл изменён, но не сохранён Вы отредактировали src/components/Button.js — Git знает, что он изменился, но не сохранил это
staged Изменения подготовлены к коммиту Вы выполнили git add src/components/Button.js — изменения ждут фиксации

Чтобы посмотреть текущее состояние всех файлов:

git status

Пример последовательности:

  1. Вы создали src/screens/AuthScreen.js → untracked
  2. Вы выполнили git add src/screens/AuthScreen.js → staged
  3. Вы выполнили git commit -m "Добавил экран авторизации" → теперь файл tracked, изменения зафиксированы
  4. Вы снова отредактировали src/screens/AuthScreen.js → теперь он modified

Запомните: чтобы сохранить изменения — нужно сначала add, потом commit.
Нельзя сделать коммит, не добавив изменения в staging-зону.