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 - тут можно автоматически сформировать гитигнор файл
Отслеживание пустой папки
чтобы гит отслеживал пустые папки, нужно добавить в корень нужной для отслеживания папки пустой файл .keep