Более 9 лет опыта в разработке.
Повышение квалификации:
Инструментарий:
Git - это система управления версиями ,т.е основная задачи гит помогать создавать и сохранять различные версии проекта. Иными словами хранилище истории разработки проекта
Git - распределенная система. На каждом компьютере находится полная версия репозитория (без интернета будут доступны все объекты гит, для переключения между разными версиями проекта, каждый репозиторий независимо от других, и на каждом ПК находится полная версия репозитория).
Преимущества:
GIT — распределённая система контроля версий
GITHUB — сервис хостинга GIT репозиториев
cd ~/SomeFolder — переход в папку
mkdir MyProject — создание новой папки
echo ‘some text' > file. html — создание файла с текстом
ls — спиcок файлов в папке
cat file. txt — просмотр содержимого файла
rm file. txt — удаление файлов
rm -rf file. txt — удаление файлов и папок
Установка и начало работы
•Проверить установлен ли git уже на ваш компьютер с помощью терминала.
•git -version <2.42.0>
•Разговор про семантическое управление версиями (Что такое семантическое версионирование? | Merion Academy — платформа доступного IT образования | Дзен (dzen.ru))
•main.minor.patch
•Main/Major (основной номер версии) основной номер указывает на текущую версию общедоступного интерфейса пакета.
•Minor (дополнительный номер версии) — дополнительный номер указывает на текущую функциональную версию вашего программного обеспечения. Он увеличивается всякий раз, когда вы добавляете новую функцию, но не меняете интерфейс вашего пакета.
•Patch (номер исправления) — номер исправления увеличивается каждый раз, когда вы вносите какое-то незначительное изменение, которое не влияет на общедоступный интерфейс или общую функциональность вашего пакета.
• Скачать с сайта Git (git-scm.com).
Создание репозитория
• перейти в директорию где хотите создать репозиторий
• ввести команду git init
• после инициализации создастся скрытая папка .git
• чтобы увидеть скрытую папку в терминале ls --la (Mac) / ls -Force (Windows)
• создайте папку MyProject на рабочем столе и инициируйте там новый репозиторий
Области GIT
В гит существует три области в которых могут находиться файлы и папки и какие у них (файлов) есть статусы в ситеме контроля версий git.
Рабочая директория (working directory)
Именно это область гит содержит те видимые файлы и папки которые вы видите в вашем проекте.
Индекс (staging area)
В эту область добавляются файлы перед сохранение в репозиторий (т.е подготавливаете)
Репозиторий (repository)
Сохраненные изменения из индекса записываются в репозиторий (это именно то что находится в папке .git/objects)
P.s. Индекс и репозиторий скрыты и находятся в папке .git
Рабочая директория — working directory
Тут все просто.
В индексе (промежуточная область между рабочей директорией и репозиторием) находятся файлы и папки которые вы подготавливаете для сохранения в репозиторий (для commit) которые можно просмотреть с помощью git status.
Непосредственно то, что содержится в скрытой папке .git
Все объекты: файлы, папки, коммиты и т. д. находятся в папке objects. Название файлов и папок основывается хешах гит объектов
Версия 1 (сгенерирован уникальный sha1 hash и создан новый объект).
Версия 2 (сгенерирован уникальный sha1 hash и создан новый объект).
В рабочую директорию они добавляются известным способом — создание файлов на компьютере.
Рабочие директории => индекс с помощью команды:
Индекс => в репозиторий с помощью команды:
Переход между версиями (при этом файлы в вашей рабочей директории перезаписываются соответствующей версией из гит репозитория) с помощью команды:
Каждый объект в git имеет уникальный ID (sha1 хеш).
Каждый объект генерируется с помощью хеш-функции которая называется sha1.
Как работает хеш-функция
Именно на сгенерированных хешах объектов гит основаны названия подпапок папки object и файлов в этих подпапках.
Название папки — первые 2 символа.
Название файла — остальная часть.
Коллизия GIT J или Сбор атомов на 10 лунах
Хэш SHA-1 представляет собой строку из 40 шестнадцатеричных символов… это 4 бита на символ, умноженный на 40… 160 бит. Теперь мы знаем, что 10 бит — это примерно 1000 (1024, если быть точным), что означает, что существуют
1 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 разных хэшей SHA-1 … 1048.
Чему это эквивалентно? Ну, Луна состоит примерно из 1047 атомов. Итак, если у нас есть 10 Лун… и вы случайным образом выбираете один атом на одной из этих лун… а затем продолжайте и снова выберите случайный атом в них … тогда вероятность того, что вы выберете один и тот же атом дважды, равна вероятности того, что два заданных коммита git будут иметь одинаковый хэш SHA-1.
Что такое COMMIT? что он содержит?