Git for Windowsの初期設定の意味

そろそろGitでclone以外を使ってみたいのですが、基礎すらよく理解していないため怖くて使えません。 よくわからない場合は、よくわからないことを調べてみたり、とりあえず使ってみることで理解が深まると思っています。

そんなわけで「よくわからないことを調べてみる」ということで、今回はGit for Windowsをインストールする際に参考にした下記ページでの「グローバルの設定」の意味を調べてみることにします。

私家版 Git For Windowsのインストール手順 | OPC Diary

$ git config --global user.name "Mei Sei"
$ git config --global user.email "hoge@email.com"
$ git config --global color.ui auto
$ git config --global core.quotepath false
$ git config --global --unset i18n.logoutputencoding
$ git config --global --unset i18n.commitencoding
$ git config --global --unset svn.pathnameencoding

コマンドの意味

どれもgit configなので、git help configで表示されたヘルプの内容をもとにまとめてみます。

git config --global

まずは全コマンドでの共通部分。 これは、Git用の各種設定を、取得したり設定するためのコマンドのようです。

Git用の各種設定は大きく分けて、A「システム上の全ユーザ用の設定」、B「現在のユーザ用の設定」、C「現在使っているリポジトリ用の設定」の3種類があり、指定しない場合はA、B、C順で設定を参照し、一番最後の設定が有効になるようです(つまり、設定の優先度準的にはC、B、A)。

で、「--global」はそのうちのBを指定した版。つまり、現在のユーザ用のGitの設定を指定することになります。

Aを指定するのは「--system」で、Cを指定するのは「--local」。設定を取得する際は省略し、設定を書き込む際は明示的に使用するのがよさそうですね。

git config --global user.name "Mei Sei"

各種コミット時に記録されるフルネームの設定です。誰のコミットかを記録するために必要な情報ですね。

環境変数GIT_AUTHOR_NAMEGIT_COMMITTER_NAMEが設定されている場合はそれらで上書きされるようです。

git config --global user.email "hoge@email.com"

各種コミット時に記録されるeメールのアドレスです。eメールアドレスなら世界中で一意なはずってことで、識別するために使われるっぽいです。

環境変数GIT_AUTHOR_EMAILGIT_COMMITTER_EMAILEMAILが設定されている場合はそちらで上書きされるようです。

git config --global color.ui auto

gitコマンドでコンソールに出力される内容の色付けをする設定のようです。個別に細かい設定もできるようですが、autoにしておけば基本は万事OKなもよう。 最近のバージョンだとautoがデフォルト設定なようなのでこの設定はなくてもよさそうです。

git config --global core.quotepath false

この設定をすることで、ファイルなどのパス表示系のGitコマンドで日本語ファイル名を表示できるようになるようです。

デフォルトだとこの設定がtrueで、その場合、Asciiコードでの印字不可能文字などのパスが"\344\270\200\350\246\247"といった具合にダブルクォテーションで括られたうえでエスケープ表示されるようです。日本語環境なら表示できるので、この設定は常にfalseで問題なさそうですね。

git config --global --unset i18n.logoutputencoding

i18n.logoutputencodingの設定を消しています。i18n.logoutputencodingはログ表示系コマンドでのエンコーディングを指定する設定で、Git for Windowsユニコードに対応する前にこの設定をした人はもう設定不要だよということで設定を消すようにしているようですね。

git config --global --unset i18n.commitencoding

i18n.commitencodingの設定を消しています。i18n.commitencodingはコミット時のコメントのエンコーディングを指定する設定で、Git for Windowsユニコードに対応する前にこの設定をした人はもう設定不要だよということで設定を消すようにしているようですね。

git config --global --unset svn.pathnameencoding

svn.pathnameencodingの設定を消しています。ヘルプではsvn.pathnameencodingに関する情報は見つかりませんでしたが、ググった感じどうやらgit-svnというgitとsvnを連携させるコマンドでsvnのパス情報をgit側に格納する際のエンコーディングを指定する設定のようで、これもGit for Windowsユニコードに対応したことで設定不要となったようです。

自分用の設定

調べてみた結果、自分の環境ではいろいろ設定が不要だということがわかりました。そんなわけで、今後は次の設定のみでいこうと思います。

$ git config --global user.name "naktatty"
$ git config --global user.email "naktatty@gmail.com"
$ git config --global core.quotepath false