November 29, 2022

Команды git

git clone Клонирует проект с удаленного репозитория

Первое прописать

git config --global user.name 'new user' / user— Изменяет имя пользователя
git config --global user.email test@mail.ua — Изменяет email пользователя

git config --list — Увидеть список всех настроек гит

git config --global user.name

git config --global user.email

git init Позволяет проинициализировать репозиторий в текущей папке (создастся невидимая папка где будут хранится изменения)

Пометить нужные файлы, что б гит следил за ними (закидываем в индекс)

git add {имя файла} Отслеживает изменения файлов

git add . — добавляет все файлы

Посмотреть что происходит

git status — Показывает текущий статус

Теперь сохраним наши изменения / Делаем коммит (закидываем в гит репозиторий)

git commit Сохраняет изменения в коммит
git commit -m 'commit message' — создает коммит с сообщением

Создадим файл гит игнор и добавим туда файлы

.gitignore

И сам файл gitignore добавим в add

git add .

И когда что-то в коде изменили делаем

git add .

git commit -m 'commit message'

Чтоб посмотреть разницу между первым и вторым коммитом

git log --oneline

git diff {56688c6 //1 коммит} {8748010 //2 коммит}

или:

История коммитов

git log

git log --graph

Перемещения по коммитам:

Указатель Head указывает не на ветку а на конкретный коммит

git checkout 56688c622 — переключится между коммитом

git checkout master — вернутся в самый последний коммит ветки

Работа с ветками в репозитории

git branch -m {main} — переименовать ветку

git branch — показывает список веток

git branch {branch-name} — создает новую ветку branch-name

Чтоб удалить ветку нужно с нее выйти

git branch -D {branch-name} — удаляет ветку branch-name

git checkout {имя ветки} переключается на другую ветку

git checkout -b {имя ветки} — создает и переключается на ветку {branch-name}

git merge {имя ветки} - Совмещает текущую ветку с выбранной

Нужно находиться в основной ветке

2 способ объединения веток:

Зайти в нашу не основную ветку и написать git rebase {main /master}

git checkout {имя основной ветки}

и уже тут делаем git merge {имя не основной ветки}

Работа с github

git push Заливает текущие локальные коммиты в удаленный репозиторий

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

git push origin -d {навивание ветки} — удаляет на гит хабе

Работа с конфликтами

При объединении может быть ошибка, тогда обновляем нашу основную ветку и переключаемся на ответвлённую и нужно наши обновленные изменения добавить в ответвлённую ветку,

делаем в ней git merge {основная ветка} и смотрим на ошибки


git clone {https://github.com/Catalyst-42/Tracker.git} Клонирует проект с удаленного репозитория

GIT: Merge или Rebase?

Merge создает новый коммит в нашей основной ветке (результирующий) который получился путем объединением двух веток (при большом количестве это запутывает историю)

Rebase - команда rebase берет нашу отпачковану ветку и переносит эти коммиты в основную ветку, то есть история коммитов становится линейной

(при использовании rebase мы хоть и получили линейную историю но, уничтожает контекст создания веток и мы можем из-за этого получить не отлавливаемые баги)

Git Flow - способ работы с ветками

Коммит это снимок ваших локальных файлов, записанный в локальный репозиторий

Ветка это лишь указатель на хеш коммита, от которого пошло ответвление

Чтоб перемещается по веткам просто меняем указатель Head

Head это указатель который показывает на последний коммит в каждой конкретной ветке (если мы бы были в ветке Dev то Head бы указывал на C6)

Файлы которые мы подготавливаем для коммитов

Вот какие коммиты мы увидим для ветки feature 1 если напишем git log