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

minttyとlsの色設定をSolarizedに

デフォルトの色設定だと黒バックに白字・青字・緑字と、自己主張が強いのでもう少しマイルドな色設定、 Solarized にしてみました。

f:id:naktatty64:20160223022203p:plain

minttyの色設定を変更

Solarizedのmintty用の色設定を公開してくれている方がいるので、ありがたく使わせてもらいます。

まずは設定ファイルを取得しておきます。

~$ cd ~/etc
~/etc$ git clone https://github.com/mavnn/mintty-colors-solarized

その後、「.bashrc」などに次の設定を追加します。

# minttyのカラー設定をSolarizedに
source ~/etc/mintty-colors-solarized/sol.dark

このままだとlsでのファイルやフォルダの色分けがわからなくなってしまうため、続いてlsの色設定も行います。

lsの色設定を変更

Solarizedのls用の色設定を公開してくれている方もいるので、これまたありがたく使わせてもらいます。

まずは設定ファイルを取得しておきます。

cd ~/etc
git clone https://github.com/seebi/dircolors-solarized

その後、「.bashrc」などに次の設定を追加します。

# lsの色設定をSolarizedに
eval `dircolors ~/etc/dircolors-solarized/dircolors.ansi-dark`

参考リンク

Git Bashでのpingの文字化けを解決

Git for WindowsのGit Bashを使っているのですが、pingを使用すると文字化けしてしまいます。
これを解決するには、「.bashrc」あたりに次のように書けばOKです。

function wincmd() {
    CMD=$1
    shift
    $CMD $* 2>&1 | iconv -f cp932 -t utf-8
}

alias ping='wincmd ping'

この方法以外にも、minttyの設定を変更してCharacter SetにSJISを設定することでも文字化けしなくなりますが、これだと今度はコンソール上でUTF-8が扱えなくなってしまいます。
…よく考えたら自分の用途的にはそれであまり困らないのですが、「pingの出力をShift_JISからUTF-8に変換する」というのが一般的なようなので、真似してみました。

参考リンク

sakashita-net.jp: minttyでpingを使うと文字が化けてしまう

Windowsで画面の上端での最大化無効化

Windows 8.1を使っているのですが、ウインドウの位置を調整しているときに勝手に最大化されることがあり困ります。

この機能、次のように設定することで無効化できます。

「コントロールパネル」
→「コンピュータの簡単操作」
→「マウスの動作の変更」
→「ウインドウの管理を簡単にします」
にある
「ウインドウが画面の端に移動されたとき自動的に整列されないようにします」
にチェックを入れる

ただしウインドウをシェイクして他のウインドウが最小化される機能も同時に無効になるので注意。
※ 追記:Windowsキー + 矢印キー でウインドウを移動させる機能も無効になっていました。この機能はよく使用するため、「上端での最大化無効化」を諦めることにしました…

参考リンク

画面の上端に移動させると最大化になるのを無効にするには | 初心者のためのOffice講座

~/.ssh/config

ssh接続で毎回 ssh ユーザ名@ホスト名 と打つのが面倒だったので、 ssh 任意の名前 で繋げるように設定。

~/.ssh/config に次のように書けば「192.168.0.7」のホストに「testuser」でssh接続するのを ssh edison とできる。

Host edison
  HostName 192.168.0.7
  User testuser

参考リンク

qiita.com

Windowsのhostsファイル

%windir%\system32\drivers\etc\hosts

特定のWindowsマシンから「192.168.0.7」を「edison」という名前として扱うには、上記ファイルを管理者権限で開いて次のように追記すればよい。

 192.168.0.7     edison

参考リンク

www.atmarkit.co.jp