tech-tips/Программное обеспечение/Версионирование кода/git/Смена кодировки git-репозитория с CP-1251 на UTF-8.md

47 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
tags: ["git", "iconv", "cp866", "cp1251"]
---
Открываем git bash, жмём **ПКМ > Options… > Text**. Ставим там `Locale = ru_RU` и `Character set = UTF-8`. Шрифт (Font) должен поддерживать кириллицу.
Задаём настройки в файле `config` репозитория:
```
[core]
...
quotepath = false
[i18n]
# кодировка сообщений коммитов
commitencoding = cp1251
# кодировка вывода в консоль, если не задана, то == commitencoding
logoutputencoding = cp866
```
Переходим в рабочую директорию проекта и смотрим кодировку коммитов:
```
git log --pretty="%h [%e] %s"
```
Вывод будет приблизительно таким:
```
495d3cb [cp1251] Popups png -> jpg
fc0961e [cp1251] Keyboard png -> jpg
8665af6 [cp1251] Buttons png -> jpg
27fa7c0 [cp1251] Backgrounds png -> jpg
...
```
Сначала идёт короткий хеш коммита, в квадратных скобках — его кодировка (может быть пустой), а далее его комментарий. Комментарии на кириллице могут отображаться коряво, если ранее настройки git bash не менялись (или стояли отличные, от указанных выше) и работа в консоли велась в другой кодировке.
Запускаем перекодирование
```
git filter-branch --msg-filter 'iconv -c -s -f CP1251 -t UTF-8' --tag-name-filter 'cat' -- --all HEAD
```
Теперь можно обновлять свой remote. Остальным участникам разработки остаётся только получить свежий репозиторий и работать уже с ним. Вопросы переноса чужих наработок, не попавших в новый перекодированный репозиторий, оставляю за кадром.
[Источник](https://axenov.dev/%d1%81%d0%bc%d0%b5%d0%bd%d0%b0-%d0%ba%d0%be%d0%b4%d0%b8%d1%80%d0%be%d0%b2%d0%ba%d0%b8-git-%d1%80%d0%b5%d0%bf%d0%be%d0%b7%d0%b8%d1%82%d0%be%d1%80%d0%b8%d1%8f-%d1%81-cp-1251-%d0%bd%d0%b0-utf-8/)