読者です 読者をやめる 読者になる 読者になる

WonderPlanet DEVELOPER BLOG

ワンダープラネットの開発者ブログです。モバイルゲーム開発情報を発信。

やっぱり Git 上で日本語ファイル名は使うべきじゃないという話

Git

お世話になります。藤澤です。

ぼくは普段 Git のクライアントに SourceTree を使ってるんですが、ある日突然、変更していないはずのファイルが untracked として表示されるようになってしまいました。

作業ツリーをいつもキレイにしておきたい派としては これは非常に気になります。
というわけでちょっと腰を据えてこいつと格闘してみました。

ファイル名を変えてみる

ファイル名に "*" が含まれてるせいかな、ということでファイル名を変えてみます。
これを index に add しようとするとエラーが。

おまけに変更をリセットしようとしても同様のエラーが出て元に戻すことすらできません。
(仕方ないので「ローカルの変更を破棄」オプション付きでブランチを切り替えて元に戻しました)

とりあえず commit してみる

試しにテスト用のブランチを切って commit してみると作業ツリーからは消えてくれましたが、Github のサイト上で確認すると同名のファイルが 2 つに。

さらにこの状態でファイルを削除すると、2 ファイルとも削除したことになってしまいました。

コマンドラインで確認してみる

SourceTree 上では何が起こってるか分からないので、コマンドラインから git status してみます。

日本語が文字化けしていますが、状況としては SourceTree 上で見たものと変わらないようです。
その後いろいろ格闘していると、ファイル名の変更前後で文字コードが微妙に変わっているのに気がつきました。

そういえば El Captan から濁点の扱いが変わったというようなニュースを見た気がしますが、その影響でしょうか。

Mac 濁点問題

そこで "Mac 濁点" で先生に聞いてみるといろいろ出てきます。要約すると「濁点を含めて一文字として扱うのが一般的だけど Mac は濁点が独立して一文字になっている」ということのようです。
Git 上でこの問題を解消するには "core.precomposeunicode" を true にしてあげればよい、とのことなのですが、

すでに true になっていました……。

Github のサイト上からファイルを直接削除

これはもう Windows とかからアクセスしてリネームするしかないのかな、と思いながらウロウロしていたところ、Github のサイト上から直接ファイルを消すことができました。

その後、ローカルのファイルをリネームして commit したところ、無事に反映されました。

以上、やっぱり日本語ファイル名は使うべきじゃないな、と思ったできごとでした。