Git for Windowsを構成する機能

gitのロシア語文字の問題


コマンドラインのWindowsgitバージョンの使用を開始すると、次の問題が発生します。ロシア語の文字が表示されるすべてのgitメッセージは判読できません。 ロシア語のファイル名は「\ 362 \ 345 \ 361 \ 362」のようになり、コミットテキストは次のようになります- <C8> <ED> <E8> <F6> <E8> <E0> <EB> < E8> <E7> <E0> <F6> <E8> <FF> <EF> <F0> <EE> <E5> <EA> <F2> <E0> 。 つまり 元の文字列は、エンコーディングlatin1に従ってutf8に変換されます。





トラブルシューティング


たとえば、 C:ドライブにrepディレクトリを作成し、 testという新しいファイルを作成して、新しいリポジトリを初期化しました。 その後、彼は現在のディレクトリのすべてのファイルをリポジトリに追加しました。

 C:\ rep> git init
 Cの初期化された空のGitリポジトリ:/rep/.git/

 C:\ rep> git add。




ロシア語の文字を含むファイルは、問題なく読むことができるエンコードでは表示されないことがわかります。

 C:\ rep> git status
 #ブランチマスター上
 #
 #初期コミット
 #
 #未追跡ファイル:
 #(「git add <file> ...」を使用して、コミットされる内容に含めます)
 #
 # "\ 362 \ 345 \ 361 \ 362"
コミットには何も追加されませんが、追跡されていないファイルが存在します(追跡するには「git add」を使用します)




このgitの動作を修正するには、 [core]セクションのquotepathパラメーターを変更して、 falseに設定する必要があります

quotepath = false





注意:グローバル設定ファイルまたはローカル設定ファイルのいずれかを変更できます。



グローバル設定ファイルは次の場所にありますC:\ Program Files \ Git \ etc \ gitconfig、ローカルリポジトリディレクトリ.git \ config



コミットの説明を編集すると、次の問題が発生します。

 C:\ rep> git commit -a -s




8ビットエンコーディングでコミットを編集して保存すると、次のメッセージが表示されます。

警告:コミットメッセージはUTF-8に準拠していません。
メッセージを修正した後に修正するか、設定を設定することができます
変数i18n.commitencodingをプロジェクトが使用するエンコーディングに変更します。
 [マスター(ルートコミット)cc05f8a]╚ЎЎЄЄサインオフ:maslakov <maslakov@mail.local>
  1個のファイルが変更され、1個の挿入(+)、0個の削除(-)
 作成モード100644 "\ 362 \ 345 \ 361 \ 362"




したがって、コミットの説明を入力するエンコーディングを[i18n]セクションのcommitencodingパラメーターで指定する必要があります。

commitencoding = cp1251



gitコンソールインターフェイスで作業するときに発生する3番目の問題は、ログ出力です。

 C:\ rep> git log




デフォルトでは次のようになります

コミットcc05f8a470e8602ded60ba9c979c93148b334d4e
作成者:maslakov <maslakov@mail.local>
日付:2009年11月10日(火)12:37:38 2009 +0300
     <C8> <ED> <E8> <F6> <E8> <E0> <EB> <E8> <E7> <E0> <F6> <E8> <FF> <EF> <F0> <EE> <E5 > <EA> <F2> <E0>
    サインオフ:maslakov <maslakov@mail.local>




検死が示したように、 lessユーティリティは「非難」し、環境変数LESSCHARSET = koi8-rを設定して、テキストを正しく表示するようにします。または単にcatユーティリティをビューアとして指定できます。 ページごとにテキストを表示するには、 catユーティリティの出力をmoreユーティリティに渡します。

さらに、 [i18n]セクションでlogoutputencodingパラメーターを設定する必要があります

logoutputencoding = cp866



原則として、上記の設定を行った後、8ビットエンコーディングで各国語を使用する場合の主な問題は解決されます。

これが私の\ .git \ configファイルです

 [コア]
         repositoryformatversion = 0
         filemode = false
         bare = false
         logallrefupdates = true
         symlinks = false
         ignorecase = true
         quotepath = false 
        ページャー=猫| more.com
        エディター= far -e
 [i18n]
         commitencoding = cp1251
         logoutputencoding = cp866






コミットのテキストをはるかに編集するため、 エディターパラメーターはfar -eとして定義されます



この情報が誰かに役立つことを願っています...



UPD:Alexey Shumkinの追加に感謝

ashu> less

www.linuxcenter.ru/lib/books/kostromin/gl_11_05.phtml

- LESSCHARSET=koi8-r ( Cygwin 1.5 )








UPD2:追加にご協力いただきありがとうございます

残念ながら、上記の解決策は、git diff、git showコマンドの出力におけるロシア文字の出力の問題を克服するのに役立ちませんでした。



インストールしたGitにiconv.exeをbinディレクトリにコピーし、Git configに次のように記述しました。

ページャー= iconv.exe -f cp1251 -t utf-8 | 少ない

それぞれcp1251エンコーディングのプロジェクトファイルがあります。



iconv.exeファイルは、Windows gnuwin32.sourceforge.net/packages/libiconv.htmの下のiconvプロジェクトのバイナリファイルを含むアーカイブをダウンロードすることで見つけることができます。

それに加えて、dllが必要です。

libcharset1.dll

libiconv2.dll(すでにGitがインストールされていて、置き換えられませんでした)

libintl3.dll(iconvのダウンロード元の依存関係アーカイブから)



All Articles