Git
Где репы
на макбуке домашки модуля 2 находятся здесь. засинхронен с репом https://github.com/serge-404a/skillboks_hw/tree/main/mod_2
/Users/sergejzaharij/education/python/homeworks/skillbox_part_2
Книга про гит https://git-scm.com/book/ru/v2
git - распределенная система, может быть центральный репозиторий.
Коммит - это снимок файлов проекта, который сохранен в системе контроля версий. Набор изменений в файлах и папках, которые сохранены в репозитории под определенным именем
Ветка - хронологическая последовательность коммитов.
Файлы в проекте могут находиться в закоммиченном, изменном, готовом к комиту состоянии, также - в отслеживаемом и нет состоянии.
Подготовка к коммиту: с помощью git add мы добавляем файлы в индекс, в коммит идут только добавленные в индекс файлы.
Индекс в Git - специальная область, в которой хранятся изменения файлов, готовые к коммиту.
В коммит попадают те изменения, которые были проиндексированы с помощью git add. если после этого в файле были изменения, которые непроиндексированы, то в коммит попадут только проиндексированные изменения. В выводе git status это то, что будет отображаться зеленым цветом. То, что отображается красным - не проиндексировано и в коммит не попадет.
Команды в консоли
git init - создание репозитория в папке. Создастся папка .git - в ней хранится вся информация о репозитории
git add . - проиндексировать все новые файлы в папке
также можно указать имя файла - тогда только он будет добавлен в индекс
git commit -m 'name commit' - создаем снимок состояния - коммит
git commit -am 'name commit' - добавляет сразу и в индекс, и в коммит
git status - посмотреть статус файлов, которые ожидают коммита
git status -s - посмотреть статус файлов в более компактном виде
M - модифицированные файлы, которые ожидают коммита
?? - неотселживаемые файлы
A - файлы, добавленные в отслеживаемые
git show - покажет инфу о последнем коммите
git diff - покажет изменения в отслеживаемых файлах
git diff --cached - после обновления индекса перед коммитом можно так посмотреть, какие изменения были в файлах
Откатиться назад
git reset HEAD <file name> - перевести файл в неиндексируемое состояние
git checkout -- <file name> - откатиться к последнему коммиту
История
git log - список коммитов в хронологическом порядке
git log -2 - вывести последние 2 коммита
git log -2 -pпо умолчинию выводится только метаинформация, чтобы вывести полную инфу, нужно добавить ключ -p.
git log -2 --stat - вывод статистики по количеству измененных файлов, а также сколько строк было добавлено или удалено
git log --pretty=oneline - вывод коммитов в одну строку. Также можно задать свой собственный формат - подробнее в документации.
Поиск за определенный период
git log --since=2.week - за какой промежуток времени ищем от настоящего момента
git log --until=1.week - задает дату, от которой надо искать до настоящего времени
поиск по параметрам
git log -SGit -p - найдет все коммиты, в которых добавлялось или удалялось слово Git
git blame file - кто автор строки в файле и в каком коммите она последний раз менялась
Хеш-сумма
У коммита есть хеш - уникальный идентификатор, автор, дата и время и комментарий, написанный автором. На основе алгоритма sha-1. Хеш вычисляется на основе файла или структуры каталога.
Может быть в длинном виде и сокращенном (7-8 первых символов от длинного формата)
Игнорирование
.gitignore
Файл помещается в корень проекта. В нем описываются шаблоны и файлы, которые им удовлетворяют, игнорируются гитом.
-
*.logtmp/*
Например, все файлы с расширением .log и все файлы в папке tmp будут игнорироваться
www.gitignore.io - тут можно автоматически сформировать гитигнор файл
Отслеживание пустой папки
Git ориентируется на файлы, папки попадают под отслеживание, если только в них находятся файлы, пустые папки — игнорируются.
Чтобы гит отслеживал пустые папки, нужно добавить в корень нужной для отслеживания папки пустой файл .keep
Ветки
подробнее занятие 6 про гит у ГБ, вот методичка к этому уроку
git branch - выводит список веток
git branch newbranch - создает новую ветку newbranch
git checkout newbranch - переключаемся на новую ветку
git branch -m newbranch newname - переименование ветки
git branch -D newname - удаление ветки
Удаленный GIT репозиторий
https://smartiqa.ru/courses/git/lesson-6 прям очень хорошая статья
урок 7
Для управления подключением удаленных репозиториев в Git предусмотрена целая группа команд – git remote.
Добавляю на мак имеющийся в гите реп с именем hw_part2_skillbox
git remote add hw_part2_skillbox git@github.com:serge-404a/skillboks_hw.git
git pull - скачивает изменения для определенной ветки
git fetch - полностью синхронит репозиторий с локальной машиной
Удаленные ветки
git branch -r - посмотреть список веток
git branch -m currant_branch_name new_branch_name - переименовать ветку локально. в удаленном репозитории при этом она не переименуется
merge request
В первом модуле скиллбокса второй части рассказывают про создание копии ветки, про создание merge request etc.