Skip to main content

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 log --author - поиск по автору

git blame file - кто автор строки в файле и в каком коммите она последний раз менялась

Хеш-сумма

На основе алгоритма sha-1. Хеш вычисляется на основе файла или структуры каталога. 

Может быть в длинном виде и сокращенном (7-8 первых символов от длинного формата)

Игнорирование

.gitignore

Файл помещается в корень проекта. В нем описываются шаблоны и файлы, которые им удовлетворяют, игнорируются гитом.

    • *.log
    • tmp/*

Например, все файлы с расширением .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 - переименовать ветку локально. в удаленном репозитории при этом она не переименуется

методичка