Git

Git

Алмаз

После установки git необходимо настроить имя и email автора

Имя:

git config --global user.name <..>
config - изменение конфигурации Git
--global - имя будет настроено глобально для всех репозиториев
user.name - настройка имени автора
<..> - ваше имя

Почта:

git config --global user.email <..>

Проверка изменений:

git config --list


Создание файла с текстом через терминал:

echo "Some text" > file_name.txt


Создание нового репозитория в новой папке:

git init

После инициализации данной команды создается скрытая папка .git

Чтобы посмотреть скрытые папки:

ls -la


Области Git

Working directory - видимая область git, которая содержит видимые папки и файлы, которые мы используем в проекте.

Staging area - в эту область добавляются файлы до того, как мы хотим их сохранить

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


Проверить состояние индекса:

git status

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


Рабочий процесс

Добавление файлов из working directory в staging area:

git add . or *file_name*

. - добавление всех новых или измененных файлов из директории


Сохранение текущей версии проекта (перенос из staging to repository):

git commit


Перемещение готовых объектов из repository to working directory, чтобы перейти к определенной версии:

git checkout


Статус отслеживания файлов

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

Staged - присваивается тем файлам, которые уже добавлены в staging area.

Unmodified - когда в working directory and repository находится одна и та же версия файла, то будет статус такого файла. Когда такой статус, можно внести изменения

Modified - когда в файл со статусом unmodified вносятся изменения, то его статус меняется на modified. Они также находятся в рабочей директории и их можно подготовить для сохранения в staging area. Когда commit им этот файл, то он снова становится в статусе unmodified

Untracked - Staged - Unmodified - Modified ( - Staged - Modified and etc)


Объекты Git

blob - объекты создаются для файлов, причем для каждой отдельной версии создается отдельный blob, различные версии файлов сохраняются в папке objects.

Tree - папка, так сохраняются в репозитории Git. Может также ссылаться на другие папки

Commit - метаданные с содержанием об изменениях или версиях, кто автор комита и дополнительная информация

Annotated tag - аннотированный тег, позволяет перемещаться по разным версиям проекта с использованием тега

Каждый объект в git имеет уникальный id (sha1 hash)


Commit

Commit - объект git, который является указателем на дерево.

При создании blob and tree, git создает также commit, который ссылается на необходимый tree. То есть является ссылкой на определенное дерево.

Из чего состоит commit

SHA1 хэш родительских коммитов позволяет отслеживать всю историю изменений. Каждый следующий коммит, ссылается на предыдущий.

Ветка - ссылка на commit. Ветка всегда ссылается на самый последний commit в этой ветке.

При создании нового commit git всегда создает новое корневой three.


Основные команды

git status

Показывает, какие файлы были изменены, отображает текущее состояние git репозитория. Также с помощью этой команды можно посмотреть, какие файлы уже находятся в staging area.


git add

Добавление файлов from working directory to staging area.


git commit -m "message"

-m - сообщение для определенного коммита.

Создание коммита с записью всех изменений в репозиторий. Все то, что было подготовлено в staging area will be save in repository.


git log

Просмотр истории изменений (коммитов).


git checkout *commit hash* or *branch name*

переход в определенную версию проекта по sha1 хэшу коммита. Также отдельно можно перейти в определенную ветку.


git cat-file -p *начало кэша коммита*

Увидеть содержимое объекта можно помощью этой команды.


Перемещение между версиями

git checkout *начало кэша коммита*


Three in git

Some three

Перемещение между ветками, происходит также как и переключение между commit. То есть:

git checkout *three_name*


Создание новой ветки (рекомендуется называть так, чтобы было понятно, какой функционал разрабатывается):

git branch *branch name*


Создание новой ветки и переход в нее:

git checkout -b *branch_name*


Отображение всех веток:

git branch


Переименовывание текущей ветки:

git branch -m *new_branch_name*


Удаление ветки (текущую ветку удалить нельзя):

git branch -d *branch_name*


Слияние веток

Слияние веток происходит за счет создания merge commit. Ветка main принимает изменения сделанные в ветке new-feature.

Слияние другой ветки (feature branch) в текущую (receiving branch):

git merge *feature branch name*

После этого git создаст merge commit:


Локальные и удаленные репозитиории

git push

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


git pull

загрузка и применение изменений с удаленного ветки в локальную


git clone *url*

клонирование удаленного репозитория на локальный компьютер


Origin - имя удаленного репозитория по умолчанию


git branch -a

Отображает все ветки, включая те, которые находятся в удаленных репозиториях


Связь существующего локального репозитория с удаленным


Подключение удаленного репозитория:

git remote add origin *url*
Origin - имя удаленного репозитория по умолчанию


Загрузка изменений из локальной ветки в удаленную путем создания связи между ними:

git push -u origin *branch*
origin - название удаленного сервера, на который хотим загрузить изменения
branch - название удаленной ветки в удаленном репозитории, в которую изменения из текущей версии будут загружены.


Дальнейшние загрузки изменений в ветку удаленного репозитория после установки связи между локальной и удаленной версиями:

git push and git pull


Просмотр соединения локальной ветки с удаленной можно:

git branch -vv

Report Page