Базовые понятия
Основной задачей гита является - хранение и отслеживание изменений в проекте (на примере папки с файлами main.go и go.mod, которые являются как файлами, так и представляют из себя отслеживаемый объект, внутри которого меняется код).
Commit – это “слепок” проекта на определенный момент времени, содержащий только изменения по сравнению с предыдущим состоянием, а не полную копию файла.
Пример: Создание первого commit с файлами, изменение типа данных в файле main.go
и фиксация изменений во втором commit.
Но сами по себе коммиты не висят в воздухе. Они привязаны к такой вещи, как ветка.
Ветка – это направление развития проекта, начиная с основной (по умолчанию main). Ветки позволяют разрабатывать новые функции или вносить изменения без воздействия на основной проект до их слияния.
Сама по себе ветка тоже не висит в вакууме. Она уже подвязана под репозиторий.
Репозиторий – это место, где Git отслеживает изменения в проекте. Инициализация репозитория включает в себя начало отслеживания изменений.
Сам проект не является репозиторием. Репозиторий - это все те файлы, в которых хранятся ветки, коммиты и все остальные побочные элементы гита.
Множество вещей в репозитории репрезентируют то, что находится в нём.
Репозиторий хранится в скрытой папке .git
. Внутри .git
хранятся данные о коммитах, ветках и истории изменений проекта.
Веток может быть много. Обычно создаются разные ветки под разные задачи и доменные области. Есть различные соглашения о коммитах и GitFlow
Установка
Всё по поводу установки можно найти тут
Создание репозитория
Команда для инициализации репозитория проекта. После инициализации гит будет следить за всеми файлами внутри папки и во вложенных папках.
Далее представлена команда, которая выведет текущее состояние.
Пока что все наши файлы в проекте являются непроиндексированными, так как мы их не добавили в список отслеживаемых.
Git config
Команда git config
позволяет сконфигурировать вашу рабочую среду гита в системе.
Обязательно нужно будет заполнить поля имени и почты, чтобы вас могли идентифицировать другие пользователи.
Чтобы просмотреть все сконфигурированные поля, можно воспользоваться данной командой
Ну и так же список глобального конфига можно просмотреть просто через вывод файла .gitconfig
внутри домашнего каталога
Первый коммит
Первым делом, когда мы создали новый файл внутри проекта, нужно его подцепить под репозиторий, чтобы гит отслеживал все изменения в файле
Для добавление файла в отслежиываемые гитом, нужно воспользоваться командой git add
. Она индексирует и стейджит все файлы, подгатавливая их к коммиту. Индексация добавит файл в репозиторий, а стейдж подготовит информацию о всех изменениях файла (создание/редактирование) в коммит.
Ну и так же мы можем удалить файл из отслеживаемых через git rm
Чтобы зафиксировать изменения в отслежиываемых файлах, нужно воспользоваться командой git commit
. Эта команда откроет редактор vim/nano и попросит ввести описание коммита. Можно воспользоваться флагом -m
и ввести только тайтл коммита. Либо мы можем несколько раз передать -m
с разными сообщениями, чтобы получить на выходе многострочный коммит.
Git log и checkout
Для того, чтобы просмотреть историю изменений по проекту, мы можем воспользоваться командой git log
Она показывает нам идентификатор коммита, на какой ветке он расположен, автора, дату создания и сообщение коммита
Далее попробуем добавить новый файл index.md
, проиндексировать его через git add .
и изменить наш старый README.md
. До того, как мы заново совершили индексацию, гит просто отображал нам, что у нас есть новый файл (который готов к коммиту) и то, что у нас есть изменения в другом файле (который не был проиндексирован), который не был готов к коммиту.
Индексация в целом вносит изменения по созданию и изменению файлов и заносит их все в коммит!
После того, как мы сделали ещё один коммит, у нас он появится в истории
Мы можем перейти на интересующий нас коммит или ветку через git checkout
И теперь все наши новые файлы, которые мы создали в новом коммите, пропали. Так же мы не видим и новых коммитов, которые мы сделали - ничего нет.
Чтобы вернуться обратно в самый верх наших изменений и увидеть всю историю коммитов, можно просто чекаутнуться обратно в нашу ветку