Команды 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.email
git init Позволяет проинициализировать репозиторий в текущей папке (создастся невидимая папка где будут хранится изменения)
Пометить нужные файлы, что б гит следил за ними (закидываем в индекс)
git add {имя файла} Отслеживает изменения файлов
git add . — добавляет все файлы
git status — Показывает текущий статус
Теперь сохраним наши изменения / Делаем коммит (закидываем в гит репозиторий)
git commit Сохраняет изменения в коммит
git commit -m 'commit message' — создает коммит с сообщением
Создадим файл гит игнор и добавим туда файлы
И сам файл gitignore добавим в add
И когда что-то в коде изменили делаем
git commit -m 'commit message'
Чтоб посмотреть разницу между первым и вторым коммитом
git diff {56688c6 //1 коммит} {8748010 //2 коммит}
Указатель 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 {имя ветки} - Совмещает текущую ветку с выбранной
Нужно находиться в основной ветке
Зайти в нашу не основную ветку и написать git rebase {main /master}
git checkout {имя основной ветки}
и уже тут делаем git merge {имя не основной ветки}
git push Заливает текущие локальные коммиты в удаленный репозиторий
git pull Забирает изменения с удаленного репозитория в локальный
git push origin -d {навивание ветки} — удаляет на гит хабе
При объединении может быть ошибка, тогда обновляем нашу основную ветку и переключаемся на ответвлённую и нужно наши обновленные изменения добавить в ответвлённую ветку,
делаем в ней git merge {основная ветка} и смотрим на ошибки
git clone {https://github.com/Catalyst-42/Tracker.git} Клонирует проект с удаленного репозитория
Merge создает новый коммит в нашей основной ветке (результирующий) который получился путем объединением двух веток (при большом количестве это запутывает историю)
Rebase - команда rebase берет нашу отпачковану ветку и переносит эти коммиты в основную ветку, то есть история коммитов становится линейной
(при использовании rebase мы хоть и получили линейную историю но, уничтожает контекст создания веток и мы можем из-за этого получить не отлавливаемые баги)
Git Flow - способ работы с ветками
Коммит это снимок ваших локальных файлов, записанный в локальный репозиторий
Ветка это лишь указатель на хеш коммита, от которого пошло ответвление
Чтоб перемещается по веткам просто меняем указатель Head
Head это указатель который показывает на последний коммит в каждой конкретной ветке (если мы бы были в ветке Dev то Head бы указывал на C6)
Файлы которые мы подготавливаем для коммитов
Вот какие коммиты мы увидим для ветки feature 1 если напишем git log