Gitを使い始めたら一番最初にやりたい `git config`設定メモ

  • このエントリーをはてなブックマークに追加
  • LINEで送る

Gitで一番最初にやる設定をよく忘れるのでちょっとメモしておきます。

git config

Gitの設定を行うにはgit configコマンドを利用するか、設定ファイルを直接作成&編集します。

git configコマンドを実行すると自動的に設定ファイルが作成されます。すでに設定ファイルが存在している場合には、指定した項目が上書き保存されます。設定ファイル自体も以下のようにini形式のファイルとなっており、編集自体もそれほど難しくありません。

$ cat ~/.gitconfig 
[user]
    name  = Makito Katsube
    email = katsubemakito@gmail.com
[color]
    ui = true

また設定ファイルを設置する場所、またコマンドのオプションで影響範囲が変わりますので、複数人でチーム開発する際にはGitの設定をどうやって管理するかは事前に話し合っておく必要もあります。

影響範囲ファイルコマンド
システム全体/etc/gitconfiggit config --system (設定内容)
各ユーザー~/.gitconfig または ~/.config/git/configgit config --global (設定内容)
リポジトリリポジトリの .git/configgit config --local (設定内容)
※カレントディレクトリが各リポジトリのワーキングディレクトリである必要があります

同じ設定項目があった場合、リポジトリ内にある設定が最優先されます。

このページでは git config --global を前提としてご紹介します。

- Sponsored Link -

初期設定

ユーザー名とメールアドレス

git logなどで表示されるユーザー名やメールアドレスを登録します。これをしておかないと初回commit時に怒られます。

$ git config --global user.name 'Makito Katsube'
$ git config --global user.email 'katsubemakito@gmail.com'

push方式

git push時の動作を指定します。

$ git config --global push.default current
説明
nothinggit push origin masterのように常に何をどこにpushするか指定する。
matchingローカルとリモートで同じ名前のリポジトリがあればpushする。過去のバージョンのデフォルト。
upstreamupstream branchが現在のブランチに設定されている場合pushする。
simpleupstream branchが現在のブランチに設定されており、同名のブランチ名の場合のみpushする。現状のデフォルト。
current現在のブランチをリモートに同じ名前でpushする。upstreamを設定していなくてもpushされる。

諸説ありますが個人的にはcurrent派です。

プロキシ

Gitがリモートと通信する際にプロキシを通す必要がある場合、指定を行う必要があります。HTTPとHTTPSでそれぞれ設定が必要です。

$ git config --global http.proxy http://proxy.example.com:8080
$ git config --global https.proxy http://proxy.example.com:8080

なおIDとパスワードによる認証が必要な場合は、URL中に記載します。

http://username:password@proxy.example.com:8080

改行コードの自動変換

Gitには改行コードを自動的に変換する機能が備わっており、WindowsとmacOS/Linuxが混在している環境で開発を行っているとトラブルが後を絶ちません。以下でその機能をOFFにすることができます。

$ git config --global core.autocrlf false

ファイル名の大文字と小文字を区別する

Gitではファイルの名の大文字と小文字をデフォルトでは同一視します。この挙動で問題がある場合は以下のように無効にしておきます。

$ git config --global core.ignorecase false

git cloneしたリポジトリ内の設定ファイル.git/config上でtrueになっている場合、上記の設定をしても効きません。同じ設定項目の場合リポジトリ内の設定ファイルが優先されるためです。直接.git/configを編集します。

試してみましょう。以下のようにファイル名を変更してもgitは認識してくれません。

$ mv Home.md home.md
$ git status
nothing to commit, working tree clean

設定した後だと無事に更新を認識してくれるようになりました。

$ git config --global core.ignorecase false
$ vi .git/config
ignorecase = false

$ mv Home.md home.md
$ git status
Untracked files:
    home.md

使い勝手を向上する

文字色

gitではgit statusgit diff時などにTerminalの文字色を良い感じにしてくれる機能が備わっているので、ONにしておきます。

$ git config --global color.ui true

機能によってON/OFFすることも可能です。以下のキーワード毎に truefalse を指定します。

  • color.branch
  • color.diff
  • color.interactive
  • color.status

エディター

gitではユーザーに何らかの入力を促す際にエディターを起動することがありますが、そのデフォルトのエディターを変更することが可能です。特に設定しない場合はviが起動します。Emacsやその他のエディターを所望される場合はこの設定をお忘れなく。

$ git config --global core.editor emacs

Windowsの場合はエディターのフルパスを "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -nosession" といったような形で指定します。

エイリアス

頻繁に実行するgit statusのようなコマンドはキーボードのタイプ数をできる限り短くしたいものです。そんなときに利用するのがエイリアス。

$ git config --global alias.st status
$ git config --global alias.df diff
$ git config --global alias.co commit
$ git config --global alias.br branch
$ git config --global alias.ps push
$ git config --global alias.pl pull
$ git config --global alias.ck checkout

上記の設定を行うことでgit stとタイプするだけでgit statusを発動することが可能です。

なおエイリアスはタイプ数を短縮するだけでなく、独自のコマンドを作成する(っぽい)ことも可能です。オプション指定が激しく長くなる場合などに活用すると非常に捗ります。

$ git config --global alias.graph log --pretty=format:'%Cgreen[%cd] %Cblue%h %Cred<%cn> %Creset%s' --date=short  --decorate --graph --branches --tags --remotes

LinuxやmacOSをお使いの場合、シェルのaliasに登録しておくと最初のgit部分も端折ることができますが、やりすぎると自分でも混乱するのでほどほどにw

alias pull='git pull'
alias push='git push'

日本語ファイル名をエンコードしない

$ git config --global core.quotepath false

この設定をしないと以下のように日本語ファイル名がエンコードされちょっと見づらい。

$ git status
Changes not staged for commit:
    modified:   "Git\343\201\256\345\247\213\343\202\201\346\226\271.md"

設定後は以下のようにエンコードされなくなります。

$ git config --global core.quotepath false
$ git status
Changes not staged for commit:
    modified:   Gitの始め方.md

認証情報をキャッシュする

GitはリモートリポジトリにHTTP(HTTPS)でログインした際の認証情報をデフォルトではキャッシュしてくれません。そのためpushpullする度に毎回IDとパスワードを求められてしまいます。GitHubを訳あってHTTPSで使うときなど気が狂いそうになりますw

以下の設定でメモリ上に24時間キャッシュしてくれます。

$ git config --global credential.helper 'cache --timeout=86400'

もしくは以下の設定でファイルに半永久的に保存することもできますが、パスワードがそのまま平文でファイルに記録されるためセキュリティ面を考えると気が狂いそうになるためおすすめできません。

$ git config --global credential.helper 'store --file ~/.git_credentials'

というわけで通常はOSが提供するパスワード管理の仕組みを利用します。macOSの場合は以下のようにするだけです。

$ git config --global credential.helper osxkeychain

Windowsの場合は以下をインストール。

LinuxのXWindowの一種であるGNOMEを利用している場合は以下をインストール。

※以下のページを参考にさせていただきました。
https://qiita.com/usamik26/items/c655abcaeee02ea59695

設定内容の確認

git config--listオプションを指定することで現在の設定を確認することができます。

$ git config --list
user.name=Makito Katsube
user.email=katsubemakito@gmail.com
color.ui=auto
alias.st=status
alias.co=commit
alias.br=branch
alias.ck=checkout
branches --tags --remotes
push.default=current

もしくは$HOME/.gitconfigに設定がまとまっている場合は、こちらをそのまま覗いても良いでしょう。

$ cat ~/.gitconfig 
[user]
name  = Makito Katsube
email = katsubemakito@gmail.com

[color]
ui = true

[alias]
st = status
co = commit
br = branch
ck = checkout

[push]
default = current

設定内容を削除する

すでに設定した項目を削除するには、--unsetオプションを使用します。例えばuser.nameを削除するには以下のようにします。

$ git config --global --unset user.name

実際に試してみましょう。

$ git config user.name
Makito Katsube

$ git config --global --unset user.name

$ git config user.name

もしくは直接~/.gitconfigなどを編集してしまってもかまいません。

ここまでの~/.gitconfig

ひとまずここまで設定すればそれなりに使い始めることができるでしょうか。

[user]
name  = Makito Katsube
email = katsubemakito@gmail.com

[color]
ui = true

[alias]
st = status
df = diff
co = commit
br = branch
ps = push
pl = pull
ck = checkout
graph = log --pretty=format:'%Cgreen[%cd] %Cblue%h %Cred<%cn> %Creset%s' --date=short  --decorate --graph --branches --tags --remotes
diffw = diff --word-diff

[push]
default = current

[core]
quotepath  = false
autocrlf   = false
ignorecase = false
editor     = vi

[credential]
helper = osxkeychain

# [http]
# proxy = http://proxy.example.com:8080
# [https]
# proxy = http://proxy.example.com:8080

ここではコマンドを叩いて設定する方法をご紹介しましたが、設定ファイルを直接編集するのが一覧性も高くて楽チンです。設定ファイル自体もGitで管理できますしね。他にもおすすめの設定があればコメントなどで教えてください!

書籍

わかばちゃんと学ぶ Git使い方入門
シーアンドアール研究所 (2017-04-21)
売り上げランキング: 1,575

参考サイト



- Sponsored Link -

Donate

投げ銭お待ちしております!

BTC3A9nH1j7qQdKrSTrmnEdweo6zPqpHBmkxC
ETH0x1aE0541198D1F9f2908a25C35032A473e74D3731
XPXaQ9zv65F9ovfoMBrFGiPRG47aSHFhy8SX
MONAMTKgzSiS5BDueZkRCHySih24TGFwHThaDQ (MonaCoin)
ZNYZhnpf4RFYVQTAQiyoJg9dGoeC4bgT3BoSy (BitZeny)

コメントはお気軽に(゚∀゚)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください