Базовая настройка git
2024-03-16
·
5 мин. для прочтения
Базовая настройка git.
Содержание
1 Первичная настройка параметров git
- Зададим имя и email владельца репозитория:
git config --global user.name "Name Surname" git config --global user.email "work@mail" - Настроим utf-8 в выводе сообщений git:
git config --global core.quotepath false - Зададим имя начальной ветки (будем называть её
master):git config --global init.defaultBranch master
2 Верификация коммитов
- Настройте верификацию и подписание коммитов git (см. Подпись коммитов git).
3 Учёт переносов строк
- В разных операционных системах приняты разные символы для перевода строк:
- Windows:
\r\n(CRиLF); - Unix:
\n(LF); - Mac:
\r(CR).
- Windows:
- Посмотреть значения переносов строк в репозитории можно командой:
git ls-files --eol
3.1 Параметр autocrlf
Настройка
core.autocrlfпредназначена для того, чтобы в главном репозитории все переводы строк текстовых файлах были одинаковы.Настройка
core.autocrlfс параметрамиtrueиinputделает все переводы строк текстовых файлов в главном репозитории одинаковыми.core.autocrlf true: конвертацияCRLF->LFпри коммите и обратноLF->CRLFпри выгрузке кода из репозитория на файловую систему (обычно используется в Windows).core.autocrlf input: конвертацияCRLF->LFтолько при коммитах (используются в MacOS/Linux).
Варианты конвертации
Таблица 1: Варианты конвертации для разных значений параметра core.autocrlfcore.autocrlf false input true git commit LF -> LF LF -> LF LF -> CRLF CR -> CR CR -> CR CR -> CR CRLF -> CRLF CRLF -> LF CRLF -> CRLF git checkout LF -> LF LF -> LF LF -> CRLF CR -> CR CR -> CR CR -> CR CRLF -> CRLF CRLF -> CRLF CRLF -> CRLF Установка параметра:
- Для Windows
git config --global core.autocrlf true - Для Linux
git config --global core.autocrlf input
- Для Windows
3.2 Параметр safecrlf
- Настройка
core.safecrlfпредназначена для проверки, является ли окончаний строк обратимым для текущей настройкиcore.autocrlf.core.safecrlf true: запрещается необратимое преобразованиеlf<->crlf. Полезно, когда существуют бинарные файлы, похожие на текстовые файлы.core.safecrlf warn: печать предупреждения, но коммиты с необратимым переходом принимаются.
- Установка параметра:
git config --global core.safecrlf warn
4 Перечисление веток
Настроим, чтобы перечисление веток git по умолчанию не упорядочивалось по алфавиту.
branch.sort: сортирует список не по алфавиту, а по свежести дат коммитов;column.ui: выстраивает имена веток в формате столбцов так, чтобы на экране было видно больше такой информации.
git config --global column.ui auto git config --global branch.sort -committerdate
5 Перечисление тегов
- При перечислении тегов командой
git tagсортировка провидится в алфавитном порядке. - Но метки обычно имеют вид набора цифр (номер версии).
- Настроим сортировку по номеру версии:
git config --global tag.sort version:refname
6 Отображение git diff
- Для команды
git diff. - По умолчанию git использует для вычисления разности коммитов алгоритм Майерса.
- В базовой комплектации git встроено 4 алгоритма вычисления разности: myers, minimal, patience, histogram (инкрементная усовершенствованная версия patience).
- Установим по умолчанию алгоритм histogram:
git config --global diff.algorithm histogram - При включённой опции
colorMovedперемещение кода будет отображаться разными цветами, в зависимости от того, были какие-то строки добавлены или удалены.git config --global diff.colorMoved plain - Опция
diff.renamesпозволяет выявить, был ли файл переименованgit config --global diff.renames true - Опция
diff.mnemonicPrefixзаменяет префиксы (обычноa/иb/) на информацию о том, откуда пришло различие:i/(индекс),w/(рабочий каталог), илиc/(коммит).git config --global diff.mnemonicPrefix true
7 Настройка git push
- Опция
push.default simpleустановлена по умолчанию, начиная с git 2.0. - Умолчание
simpleосуществляет отправку в текущую ветку и в одноимённую ветку на удалённой машине.git config --global push.default simple - Если удалённая ветка не существует, а отслеживание веток не настроено, то вы получите ошибку.
- Опция
push.autoSetupRemoteслужит для автоматического задания удалённой ветки:git config --global push.autoSetupRemote true - Настройка
push.followTagsзапушит все теги, имеющиеся у вас на локальной машине, но отсутствующие на сервере. - Если вы создаёте теги на локальной машине, то активируйте эту настройку:
git config --global push.followTags true
8 Улучшенная выборка
- Не стоит держать на локальной машине историю копий веток и тегов, которые когда-то были на сервере, а теперь там отсутствуют:
git config --global fetch.prune true git config --global fetch.pruneTags true git config --global fetch.all true
9 Предложения автозамены
- После ввода команды, которой не существует, следует запрос, что пользователь имел в виду.
- Это поведение можно изменять с помощью параметра
help.autocorrect:0(по умолчанию): показать предложенную команду.- положительное число: выполнить предложенную команду через указанное количество децисекунд (0,1 секунды);
immediate: выполнить предложенную команду немедленно;prompt: показать предложение и запросить подтверждение на выполнение команды;never: не выполнять и не показывать предложенную команду.
- Вариант
promptпредставляется вполне разумным:git config --global help.autocorrect prompt
10 Коммиты с указанием разности
- По умолчанию
git commitвыдаёт только список изменившихся файлов. - Если установить
commit.verboseв значениеtrue, то будет представлен весь выводdiff:
git config --global commit.verbose true
11 Повторное использование ранее записанных разрешений конфликтов
- Настройка работает только при применении
rebase. - Пригодится, когда регулярно возникают конфликты.
- Опция
enabledгарантирует, что система будет записывать состояния «до» и «после» конфликтов при перебазировании. - После этого
autoupdateбудет автоматически раз за разом применять проверенные способы разрешения конфликтов.git config --global rerere.enabled true git config --global rerere.autoupdate true
12 Глобальный файл ignore
- Вы можете создать локальный файл
.gitignore. - Настройка
core.excludesfileпозволяет задать собственный глобальный файл для игнорирования:
touch ~/.config/git/ignore
git config --global core.excludesfile ~/.config/git/ignore
- Примеры файлов игнорирования можно взять в https://github.com/github/gitignore.
13 Аккуратное перебазирование
- Опция организует в виде ветки стопку ссылок и гарантирует, что при перебазировании ветки эти ссылки также будут правильно перемещены:
git config --global rebase.autoSquash true git config --global rebase.autoStash true git config --global rebase.updateRefs true
14 Улучшенная обработка конфликтов при слиянии
- Для обработки конфликтов будем использовать алгоритм
zdiff3:git config --global merge.conflictstyle zdiff3
15 Настройки git pull
- Можно установить
rebaseпо умолчаниию:git config --global pull.rebase true
16 ИСпользование fsmonitor
- Можно запускаться процесс для мониторинга файловой системы (по одному на каждый репозиторий), который будет отслеживать изменения в файлах и обновлять кэш.
- На больших репозиториях можно ускорить операции (например,
git status):git config --global core.fsmonitor true git config --global core.untrackedCache true