Git
Книга про гит https://git-scm.com/book/ru/v2
git - распределенная система, может быть центральный репозиторий.
Коммит - это снимок файлов проекта, который сохранен в системе контроля версий.
Ветка - хронологическая последовательность коммитов.
Файлы в проекте могут находиться в отслеживаемом и нет состоянии.
C помощью git add мы добавляем файлы в индекс, в коммит идут только добавленные в индекс файлы.
В коммит попадают те изменения, которые были проиндексированы с помощью git add. если после этого в файле были изменения, которые непроиндексированы, то в коммит попадут только проиндексированные изменения. В выводе git status это то, что будет отображаться зеленым цветом. То, что отображается красным - не проиндексировано и в коммит не попадет.
Команды
git add . - проиндексировать все новые файлы в папке
также можно указать имя файла - тогда только он будет добавлен в индекс
git commit -m 'name commit' - создаем снимок состояния - коммит
git commit -am 'name commit' - добавляет сразу и в индекс, и в коммит
git status - посмотреть статус файлов, которые ожидают коммита
git status -s - посмотреть статус файлов в более компактном виде
M - модифицированные файлы, которые ожидают коммита
?? - неотселживаемые файлы
A - файлы, добавленные в отслеживаемые
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 репозиторий
урок 7
git pull - скачивает изменения для определенной ветки
git fetch - полностью синхронит репозиторий с локальной машиной
Удаленные ветки
git branch -r - посмотреть список веток
git branch -m currant_branch_name new_branch_name - переименовать ветку локально. в удаленном репозитории при этом она не переименуется
merge request
В первом модуле скиллбокса второй части рассказывают про создание копии ветки, про стоздание merge request etc.