- お知らせ -
  • 当wikiのプログラムコードの表示を直してみました(ついでに長い行があると全体が下にぶっ飛ぶのも修正)。不具合があればBBSまでご連絡下さい。

はじめに Edit

gitで日本語を扱う方法。

前提として、gitは現状でファイル名に関してはUTF-8透過、つまり正規化せずにそのまま扱うようでこの手の処理はGitクライアントやOSのAPIやファイルシステムに依存するようです
(代表的な問題は、WindowsのANSI API使うとUTF-8透過できなくね?とかMacのUTF-8-MACな問題とか)

調査メモ Edit

LinuxでUTF8環境だとマズ大丈夫だと思われます。
coLinuxのUbuntu 9.04で試す限り設定等が必要の模様。

問題はさらにWindows。

以下は、Windows上 cygwin 1.7(=UTF-8版) コマンドライン版での調査です。msysgitはUTF-8周りを考えるとマズイ気がする…。

TortoiseGitは一部検証。
Git Extensionsは未検証。

情報が一部古くなっている可能性があります。ご注意ください。

日本語コミットログ ○? Edit

UTF-8Nが多分推奨かと。gitkでもUTF-8Nなら文字化けしない。

git commit -a 時に立ち上がるエディタは、
私はUTF-8N対応ということで、GreenPadを使ってみています。

※エディタの指定方法は、../git commitでエディタ起動しようとしてエラーが出るを参照のこと。

TortoiseGitは未確認。これちゃんとUTF-8で入ってるのかな…。

日本語ファイル名 ? Edit

  • ここで扱う主な問題は他のプラットフォーム(Unix等)でやりとりができるかどうか?プラットフォーム依存にならないかどうか?

結論 Edit

  • Windowsからは日本語ファイル名を追加コミットしたい場合は、UTF-8対応しているcygwin cygwin 1.7必須 (cygwin 1.7以前の場合は、UTF-8 DLL導入すればOK)
  • 最近のUnixでUTF-8環境の場合も大丈夫?
  • TortoiseGit+msysgitではまだ止めておいた方が良い。

ようするにUTF-8で統一しておけば大丈夫っぽいよ。

#ここで大丈夫というのはgithubで確認してOK、複数環境で相互運用できそう、という意味ぐらい

メモ Edit

コミット等はできるが、コミットログやgitkなどでは表示だけは文字化けする様子です。しかし、クローンしたり、前のバージョンに戻したりしたときに生成される日本語ファイル名のファイルは問題なく生成される。一応大丈夫っぽい??

LinuxなどのUTF-8環境でUTF-8でファイル名入れる分にはさして問題ない様子。
しかしWindowsの場合、SJISで入れちゃったりすると他環境とやりとりできなくなる(Windowsでしか扱えなくなるっぽい)

cygwin版の場合、UTF-8版cygwinを導入した状態で、githubに日本語ファイル名(UTF-8で入っているはず)を含むリポジトリを上げてみました。
→問題ないのかな?? (Loading commit dataばかりでてるけど…)
(2010/02/14時点でうちのcygwinのバージョンがかなり古いので要検証)

cygwin 1.7以降(=UTF-8対応)(か、cygwin + UTF-8 DLL)で今のところは問題ない気がします。(これって多分Mercurialもそうだと思う)

ただし、TortoiseGitはどうも、ダメ文字含むファイル名があると、アイコン表示等がバグります。ログ画面でも文字化けしますね。

git status など各種コマンドで日本語ファイル名が数値表示される問題 Edit

git statusなど各種コマンドで日本語ファイル名が数値表示される問題の解決策は、 ../日本語ファイル名をgit statusなどで表示する方法 を参照してください。オプション設定で解決します。

日本語が含まれるファイル ○ Edit

SJISでテキストを書いたファイルを突っ込んでみてますが
表示が化ける以外は今のところ特に問題ないみたいです。

ただし、diffとかはSJISのテキストファイルは環境によっては化けて表示されます。
→SJISが読めるページャを用意する必要がある(jlessとかかな)

githubでもSJISのテキストを表示させると表示は化けます。

ただ、データが壊れているわけではないようです。

gitkとgit-guiについて Edit

ログをグラフィカルで見るgitkの日本語状況について

日本語メッセージ関係はこちらも参考に:Tk実装によるgitリポジトリコミットビューア gitk の日本語化言語ファイルです。 - Index of /gitk

前提:
UTF-8環境前提 (~/.bashrcに記述してあるとか)

export LANG=ja_JP.UTF-8

git用のGUIツールのデフォルトエンコーディングをUTF-8に設定する

git config --global gui.encoding utf-8

cygwin 1.7.5 git 1.7.0.4 Edit

  • gitk
    • UIメッセージの日本語のために .bashrcに以下を追加しておく
    • そもそも起動しないことも多く、起動しても固まったり、クリックすると固まったりすることが多い。正常に使える確率は低い(「願う」必要がある)
    • コミットログはUTF-8なら化けない
      (その他のエンコーディングは)
    • フォントはEdit->PreferencesでUNICODE表示できるものを使用
    • diffはテキストの中身かUTF-8の場合は化けない
      (Edit->Preferences で "Support per-file encodings" にチェックを入れると他のエンコーディングも読めると思ったけど少なくともSJISのテキストはダメでした)
    • UTF-8のファイル名は文字化けする
      うーん。該当ファイルのdiffもファイル名を選択しないと表示されなかったり。
  • git-gui
    • (調査中)

Ubuntu 9.04 1.6.0.4 Edit

Edit

関連 Issue Edit

参考リンク Edit

  • UTF-8ファイル名対応版 Git for Windows
    msysgitのUTF-8パッチキテルー。パッチ作成者さんところではTortoiseGitでも動いているらしい。
    (こちらの環境ではcygwin環境もあるせいか上手く行かない…)

Show recent 10 comments. Go to the comment page.

  • Gitはマルチバイト問題が解決してから手を出した方がよさそうですね。 -- earu? 2010-01-21 (Thu) 18:53:31
    • そうですねー、とりあえず、日本語ファイル名が一番の問題と思われますです、主にWindowsでの(他の環境はUTF-8でとりあえずは何とかなるのかな)。gitのコミッタさんは日本人の方なのでうまく行く方法が提示できれば取り込まれそうなもんなのですが、問題はWindows版にあるという点が…。
      あとこのページのちょっと情報が古くなってます。またそのうちにTortoiseGitも合わせて検証します。 -- TOBY 2010-01-22 (Fri) 11:59:54
  • core.quotepath = falseする設定を追記しました。この設定でcygwin 1.7のコマンドライン版ではマルチバイトのファイル名もちゃんと表示されますね。コマンドラインで使うには大体問題ないレベルだと思います。
    あとは問題はTortoiseGitとか、gitkとかgitguiがね…。 -- TOBY 2010-04-02 (Fri) 03:00:15
  • msysGitにパッチきてた。TotoiseGitもマルチバイト周りがいけるとか。試してみてます。 UTF-8ファイル名対応版 Git for Windows -- TOBY 2010-07-27 (Tue) 02:13:46
  • Mac OSのこと書いてませんでしたが、Git自身はUTF-8透過なため日本語のファイルも扱えるみたいですが、やはりUTF-8-MACの問題が出るようです(正規化しないのでクライアント側でファイルシステムにあわせるなりなんとかしろや的な話)。
    MacWiki - UTF-8-MAC -- TOBY 2010-12-21 (Tue) 07:43:35
Name:

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2010-12-21 Tue 07:48:17 JST (2470d)