GitでShift-JISファイルを扱う際の文字化け防止ツールです。
Shift-JISファイルが含まれるプロジェクトでgit diff
やgit show
を実行すると、日本語部分が文字化けしてしまいます。このツールセットを使用することで、文字コードを自動判別して適切にUTF-8変換し、文字化けを防ぐことができます。
git_sjis_diff.sh
: 文字コード判別・変換スクリプト.gitattributes.example
: 設定例ファイル
git_sjis_diff.sh
を任意のディレクトリに配置し、実行権限を付与します。
chmod +x git_sjis_diff.sh
git config --global diff.sjis-safe.textconv "/path/to/git_sjis_diff.sh"
プロジェクトルートに .gitattributes
ファイルを作成し、Shift-JISファイルに対してフィルターを適用します。
cp .gitattributes.example .gitattributes
必要に応じて、対象ファイルの拡張子を追加・削除してください。
セットアップ完了後、通常通り git diff
や git show
を実行すると、Shift-JISファイルが文字化けすることなく表示されます。
git diff
git show HEAD
git log -p
- Gitがdiffを表示する際、
.gitattributes
の設定に基づいてgit_sjis_diff.sh
が呼び出される - スクリプトが
nkf -g
コマンドでファイルの文字コードを自動判別 - Shift-JIS(CP932)の場合のみ
nkf -w
でUTF-8に変換して出力 - その他の文字コードの場合はそのまま出力
nkf
(Network Kanji Filter)- macOS:
brew install nkf
- Ubuntu:
sudo apt install nkf
- macOS:
- スクリプトに実行権限が付与されているか確認
- Git設定が正しく登録されているか確認:
git config --list | grep textconv
.gitattributes
ファイルが正しく配置されているか確認- 対象ファイルが
.gitattributes
の設定に含まれているか確認
.gitattributes
で対象ファイルを限定することで、パフォーマンスへの影響を最小限に抑えることができます。全ファイルに適用すると処理が重くなる可能性があります。