Skip to main content

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

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

Хеш-сумма

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

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

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

.gitignore

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

    • *.log
  • Исключаем все файлы из папки tmp кроме файла test.log. Если указать для исключения папку целиком, то отдельный файл исключить потом нельзя
    • tmp/*.log
    • !tmp/test.log

Например, все файлы с расширением .log и все файлы в папке tmp будут игнорироваться

www.gitignore.io - тут можно автоматически сформировать гитигнор файл

Не рекомендуется хранить

  1. логи
  2. пользовательскте файлы
  3. файлы сред разработки
  4. внешние библиотеки
  5. файлы локальной конфигурации (можно создавать пустой файл с раширением .dist, чтобы другой чел мог скачать, убрать расширение, заполнить локальными данными, например для подключения к БД, и пользоваться)
  6. Файлы ОС
  7. слишком большие файлы

Отслеживание пустой папки

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.

git remote -v - посмотреть путь удаленного репозитория, который связан с локальным

Поменять этот путь можно, сперва удалив связку, 

git remote remove origin, а затем добавив

git remote add origin path - устанавливает в настройках локального репа путь к удаленному

  • remote - указывает, что сейчас будем производить работу с настройкой удаленного репа
  • add - добавляем новую запись в эти настройки
  • origin - название удаленного репа по умолчанию
  • path - путь к удаленному репу

git push -u origin master

  • -u - устанавливает связь между локальным и удаленным репом, чтобы в дальнейшем можно было вызывать git push и некоторые другие команды без дополнительных параметров
  • origin - имя удаленного репозитория, которое задали в команде ремув адд, master - имя ветки

Добавляю на мак имеющийся в гите реп с именем 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.