Skip to content

Git - начало, конца

Пример изображения

Для чего оно нужно ?

Начнем с проблемы:

Вы решили создать свой большой проект. Уже написали 20% от всего проекта и поняли, что вам нужна помощь. Вы решили подключить к проекту своего друга. И перед вами встала проблема, как передать весь свой проект другому человеку ?, первое что приходит в голову это скинуть его через tg или на почту, хорошая идея, но теперь стоит другая проблема как вы будете собирать проект ? Допустим ваш друг написал корзину вы в этот момент занимались аунтификацией пользователя. Он вам скидывает свои файлы и вы ему скидываете свои и вместе пытаетесь как-нибудь скрестить файлы в проекте. Тут вы понимаете что так писать проект не удобно и сильно тормозит процесс разработки. Здесь на помощь приходит Git.

Что это ?

Git - это инструмент командной строки, предназначенный для контроля версий и отслеживания изменений в файлах вашего проекта. Обычно его применяют для работы с кодом, но он подходит и для других типов данных, например, изображений, что может быть полезно дизайнеров.

С помощью Git можно вернуться к предыдущим версиям проекта, сравнивать изменения, анализировать их и объединять в общем хранилище.

Репозиторий — это место, где хранится ваш код вместе с историей его изменений. Git работает локально, и все репозитории сохраняются в отдельных папках на вашем компьютере.

И как им пользоваться ?

  1. Изначально надо зайти на сайт github и зарегистрироваться.

  2. После успешной регистрации, нужно установить Git на свой компьютер.

  3. Войти в свой аккаунт на компьютере, открываем терминал -> пишем эти команды

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

теперь мы связали свой git с аккаунтом гитхаб.

  1. Создаем новый репозиторий в гитхабе
Пример изображения

пройдемся по тому что здесь можно сделать:

Owner- создатель.

Repository name - Название вашего репозитория (проекта), можно назвать как угодно.

description - описание вашего репозитория (проекта).

Public/Private - Публичный/Закрытый, если публичный то его могут видеть/клонировать/изменять все пользователи интернета, Закрытый только вы и кого добавите в репозиторий, когда добавляете человека в репозиторий он называется contributors (пользователи github, от имени которых создавались коммиты).

Initialize a readme file - Генерирует readme файл, (лучше не нажимать эту галочку по началу изучения гита ), если не нажать эту галачку он сгенерирует команды для того чтоб загругить свой проект в репозиторий (запушить).

Вот список команд который генерируются в новом репозитории:

Terminal window
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/faildede/test.git
git push -u origin main

Эти команды нужно вписать в терминал который где отркыта директория проекта, давайте пройдемся по каждой команде чтоб понять

git init - Эта команда создает новый локальный репозиторий в текущей папке. Git начинает отслеживать изменения файлов внутри этой папки.

git add README.md - Добавляет файл README.md в индекс (стадию подготовки перед коммитом). Git теперь знает, что этот файл нужно сохранить в истории изменений.

git commit -m "first commit" - Фиксирует (сохраняет) изменения в репозитории с сообщением “first commit”. Это как “снимок” текущего состояния файлов.

git branch -M main - Переименовывает текущую ветку в main. (По умолчанию ветка может называться master, но GitHub рекомендует main.)

git remote add origin https://github.com/faildede/test.git - Связывает локальный репозиторий с удаленным (GitHub). Теперь Git знает, куда отправлять файлы.

git push -u origin main - Отправляет (загружает) файлы из локального репозитория в удаленный (GitHub). Флаг -u привязывает локальную ветку main к удаленной, чтобы в будущем можно было просто писать git push.

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

Как работает Git ?

Каждая точка сохранения вашего проекта носит название коммит (commit). У каждого commit-a есть hash (уникальный id) и комментарий. Из таких commit-ов собирается ветка. Ветка - это история изменений. У каждой ветки есть свое название. Репозиторий может содержать в себе несколько веток, которые создаются из других веток или вливаются в них.

Пример изображения

Если посмотреть на картинку, то становиться чуть проще с пониманием. Каждый кружок, это commit. Стрелочки показывают направление, из какого commit сделан следующий. Например C3 сделан из С2 и т. д. Все эти commit находятся в ветке под названием main. Это основная ветка, чаще всего ее называют master . Прямоугольник main показывает в каком commit мы сейчас находимся, проще говоря указатель.

🚀 Базовые команды Git:

git log

  • Отображает историю коммитов в текущем репозитории.

Можно увидеть:

  1. Хеш-код каждого коммита (идентификатор)

  2. Имя автора

  3. Дата коммита

  4. Сообщение коммита

Terminal window
git log

Чтобы посмотреть историю в сокращенном виде:

Terminal window
git log --oneline

Чтобы увидеть историю только для конкретного файла:

Terminal window
git log -- README.md

git status

  • Показывает текущий статус репозитория, включая:

    1. Неотслеживаемые файлы

    2. Измененные файлы

    3. Файлы, готовые к коммиту

Terminal window
git status

📌 Подсказки от Git:

Красным — файлы, которые изменены, но не добавлены в коммит (git add).

Зеленым — файлы, которые уже добавлены и готовы к коммиту.

git branch --list

  • Показывает список всех веток в репозитории. Текущая ветка выделена звездочкой *.
Terminal window
git branch --list

Упрощенная версия:

Terminal window
git branch

git checkout <имя_ветки>

  • Переключает на указанную ветку.
Terminal window
git checkout feature-branch

git branch <имя_ветки>

  • Создает новую ветку, но НЕ переключает на нее.
Terminal window
git branch new-feature

После этого, чтобы перейти на нее, используй git checkout new-feature.

git checkout -b <имя_ветки>

  • Создает новую ветку и сразу на нее переключает.
Terminal window
git checkout -b new-feature

📌 Это удобнее, чем делать git branch + git checkout.

git branch -d <имя_ветки>

  • Удаляет указанную ветку, но только если она слита с другой веткой. Если в ней есть несохраненные изменения — Git выдаст предупреждение.
Terminal window
git branch -d old-feature

Если ветку нужно удалить в принудительном режиме (даже если есть изменения):

Terminal window
git branch -D old-feature

git merge

  • Объединяет одну ветку с текущей. Для этого нужно переключиться на основную ветку и выполнить merge.
Terminal window
git checkout main # Переключаемся на главную ветку
git merge feature-branch # Объединяем с feature-branch

📌 Если в коде нет конфликтов, Git сам объединит изменения. Если есть конфликты, их нужно будет исправить вручную.

Все команды и краткое описание:

КомандаОписание
git logПоказывает историю коммитов
git statusПоказывает текущее состояние файлов
git branch --listПоказывает список веток
git checkout <ветка>Переключает на другую ветку
git branch <ветка>Создает новую ветку
git checkout -b <ветка>Создает и переключает на новую ветку
git branch -d <ветка>Удаляет ветку
git merge <ветка>Сливает изменения ветки в текущую