1. 背景

gitのデフォルトだと日本語ファイル名が表示されません。

たとえば。

ファイルリストだと以下のように日本語のファイル.mdが表示されます。

$ ll
合計 12
drwxrwxr-x  3 yamadatt yamadatt 4096  5月  6 11:46 ./
drwxrwxr-x 22 yamadatt yamadatt 4096  5月  6 11:45 ../
drwxrwxr-x  7 yamadatt yamadatt 4096  5月  6 11:46 .git/
-rw-rw-r--  1 yamadatt yamadatt    0  5月  6 11:46 日本語のファイル.md

しかし、gitだと表示されないのです。以下のようにエスケープしたような表示になります。

$ git status
ブランチ master

No commits yet

追跡されていないファイル:
  (use "git add <file>..." to include in what will be committed)
	"\346\227\245\346\234\254\350\252\236\343\201\256\343\203\225\343\202\241\343\202\244\343\203\253.md"

nothing added to commit but untracked files present (use "git add" to track)

2. 対応

configを変更して対応します。

このリポジトリだけ日本語表示したいので、--localを付与して以下のコマンドを入れます。

git config --local core.quotepath false

そうすると、期待したとおりに日本語が表示されます。

$ git status
ブランチ master

No commits yet

追跡されていないファイル:
  (use "git add <file>..." to include in what will be committed)
	日本語のファイル.md

nothing added to commit but untracked files present (use "git add" to track)

これを使用すれば、以下のようにパイプで他のコマンドに渡すことができます。

git diff --name-only | xargs -n1 ./blogsync push