git config
このドキュメントでは git config
コマンドについて詳しく見ていきます。git config
の使い方については「リポジトリのセットアップ」ページで簡単に取り上げています。git config
コマンドは、グローバルまたはローカルのプロジェクト レベルで Git の構成値を設定するのに便利な機能です。これらの構成レベルは .gitconfig
テキスト ファイルに対応しています。git config
を実行すると、構成テキスト ファイルを編集します。ここではメールやユーザー名、エディターなどの一般的な構成設定を取り上げていきます。頻繁に使用する Git 操作のショートカットを作成できる Git エイリアスについても取り上げます。git config
とさまざまな Git 構成設定をよく知ることで強力かつ独自の Git ワークフローを作成できるようになります。
使用法
git config
の最も基本的な使い方は、このコマンドを構成名とともに呼び出して、その名前の設定値を表示することです。構成名は階層に基づいて「セクション」と「キー」で構成されたドット区切り文字列です。たとえば「user.email
」のようになります。
git config user.email
このサンプルでは、メールはユーザー構成ブロックの子プロパティです。このコマンドによって、構成済みのメールアドレスがある場合はそれが返され、Git によってローカルで作成したコミットに関連付けられます。
Git の構成レベルとファイル
git config
の使い方を詳しく見ていく前に、構成レベルについて取り上げます。git config
コマンドは引数を受け取るため、どの構成レベルで動作するかを指定できます。次の構成レベルを使用できます。
関連資料
Git Branch コマンド
ソリューションを見る
Bitbucket Cloud での Git の使用方法についてのチュートリアルです。
--local
構成オプションが渡されない場合、git config
はデフォルトでローカル・レベルに書き込みます。git config
が呼び出されるコンテキスト・リポジトリにローカル・レベルの構成が適用されます。ローカル構成の値はリポジトリの .git ディレクトリ(.git/config)のファイルに保存されます。ディレクトリ:.git/config
-
--global
グローバル・レベルの構成はユーザー固有のものです。つまり、OS のユーザーに適用されます。グローバル構成の値は、ユーザーのホーム・ディレクトリに保存されますが、Unix システムでは ~ /.gitconfig
、Windows の場合は C:\Users\<ユーザー名>\.gitconfig
になります。
-
--system
システム レベルの構成は、マシン全体に適用されます。OS 上のすべてのユーザーとすべてのリポジトリが対象になります。システム レベルの構成ファイルはシステム ルート パスにはない gitconfig
ファイルに存在します。UNIX システムの場合は $(prefix)/etc/gitconfig
、Windows XP の場合は、C:\Documents and Settings\All Users\Application Data\Git\config
、Windows Vista 以降の場合は C:\ProgramData\Git\config
にあります。
つまり、構成レベルの優先順位はローカル、グローバル、システムの順になります。構成値を見つける際、Git はローカル・レベルから探し始めてシステム・レベルまで上がっていきます。
値の書き込み
これまで説明してきた git config
をさらに深く知るために、値が書き込まれたサンプルを見てみましょう。
git config --global user.email "your_email@example.com"
このサンプルでは、your_email@example.com
という値を構成名 user.email
に書き込んでいます。ここでは --global
フラグを使ってこの値を現在の OS ユーザーに設定しています。
git config editor - core.editor
テキスト エディターを起動して入力を追加できる Git コマンドは数多くあります。git config
の最も一般的な使い方は、Git で使うエディターの構成です。以下はよく使われるエディターとそのエディターを指定する git config
コマンドの対応関係を示した一覧です。
編集者 | config command |
---|---|
Atom | config command |
Emacs | config command |
nano | config command |
vim | config command |
Sublime Text (Mac) | config command |
Sublime Text (Windows 32-bit 版) | config command |
Sublime Text (Windows 64-bit 版) | config command |
Textmate | config command |
マージツール
マージの競合が発生すると、Git で「マージ ツール」が起動します。Git はデフォルトでは一般的な Unix 差分プログラムの組み込み機能を使います。組み込みの Git 差分機能ではマージの競合を見るのに最低限の役割しか果たしません。外部のサード パーティ製のマージ競合解決ツールも多数用意されています。さまざまなマージ ツールと構成の概要については、Git で競合を解決するためのヒントとツールに関するガイドを参照してください。
git config --global merge.tool kdiff3
色付けされた出力
Git では出力を読みやすくするターミナル出力の色付けがサポートされています。Git の出力をカスタマイズして好きなカラー テーマを使用できます。git config
コマンドでは以下のカラー値を設定できます。
color.ui
Git カラーのマスター変数です。false に設定すると、Git でのターミナル出力への色付けがすべて無効になります。
$ git config --global color.ui false
デフォルトでは color.ui
は auto に設定されていて、ターミナル出力ストリームに色が即座に適用されます。出力ストリームがファイルにリダイレクトされたり、別のプロセスにパイプされたりしている場合は、自動設定によってカラー コード出力は省略されます。
color.ui
の値を always に設定すると、出力ストリームがファイルやパイプにリダイレクトされたときでもカラー コード出力を適用できます。ただし、受け取り側のパイプでカラー コード入力が設定されていないと思わぬ問題が発生することがあります。
Git のカラー値
color.ui
以外の方法でも、色をきめ細かく設定できます。これらの方法でも color.ui
と同じように、false、auto、always を設定できます。これらの色設定にも固有のカラー値のセットがあります。サポートされているカラー値の一例は次のとおりです:
- normal
- 黒
- 赤
- 緑
- yellow
- 青
- magenta
- cyan
- 白人
使用しているターミナルでサポートされている場合は、#ff0000 のような 16 進数のカラーコードや ANSI 256 のカラー値でも色を指定できます。
Git の色カラー構成設定
1. color.branch
- Git ブランチ コマンドの出力色を構成します。
2. color.branch.
<スロット
>
- この値は Git ブランチの出力にも適用できます。<
スロット
> には以下のいずれかが入ります。- 1. current: 現在のブランチ
- 2. local: ローカル ブランチ
- 3. remote: refs/remotes にあるリモート ブランチの参照
- 4. upstream: アップストリーム追跡ブランチ
- 5. プレーン: 他の参照
3. color.diff
git diff
、git log
、git show
の出力に色を適用します。
4. color.diff
.<スロット
>
color.diff
に続く <スロット
> の値を構成して、特定の色をパッチのどの部分に使用するかを git に指定します。- 1. context: 差分のコンテキスト テキストです。Git コンテキストは、変更を強調表示した差分またはパッチに表示されるテキスト コンテンツの行です。
- 2. plain: コンテキストの同義語
- 3. meta: 差分のメタ情報に色を適用
- 4. frag:「ブロック ヘッダー」または「ブロック ヘッダーの機能」に色を適用
- 5. old: 差分で削除された行に色を適用
- 6. new: 差分の追加された行に色付け
- 7. commit: 差分内のコミット ヘッダーに色付け
- 8. 空白: diff の空白エラーの色を設定します
5. color.decorate.
<スロット
>
git log --decorate
出力の色をカスタマイズします。<スロット
> に入る値には、branch
、remoteBranch
、tag
、stash
、HEAD
があります。これらの値はそれぞれ、ローカル ブランチ、リモート トラッキング ブランチ、タグ、stash された変更、HEAD
に適用できます。
6. color.grep
- git grep の出力に色を適用します。
7. color.grep.
<スロット
>
- git grep にも適用可能です。<
スロット
> の変数で、grep 出力のどの部分に色を適用するかを指定します。- 1. context: コンテキスト行で一致しないテキスト
- 2. filename: ファイル名のプレフィックス
- 3. function: 機能名の行
- 4. linenumber: 行番号のプレフィックス
- 5. match: 一致するテキスト
- 6. matchContext: コンテキスト行で一致するテキスト
- 7. matchSelected: 選択した行で一致するテキスト
- 8. selected: 選択した行で一致しないテキスト
- 9. separator: 行のフィールド間 (:、-、および =) およびブロック間 (--) の区切り文字
8. color.interactive
- この変数は、インタラクティブ プロンプトと表示に色を適用します。
git add --interactive
やgit clean --interactive
がその例です。
9. color.interactive.<スロット
>
- <
slot
> 変数を指定して「インタラクティブな出力」をさらに絞り込んで指定できます。使用可能な <スロット
> の値は prompt、header、help、error です。それぞれがインタラクティブな出力に応じた動きをします。
10. color.pager
- ページャーの使用中に出力への色付けを有効または無効にします。
11. color.showBranch
- git show branch コマンドの出力への色付けを有効または無効にします。
12. color.status
- Git ステータスの出力への色付けを有効または無効にするブール値
13. color.status.<
slot
>
指定された git ステータス要素のカスタム色を指定するために使用されます。<slot
> には以下のいずれかが入ります。
1. header
- ステータス エリアのヘッダー テキストを対象とします
2. added or updated
- 追加されたがコミットされていない両方の対象ファイル
3. changed
- 変更されたが git インデックスに追加されていないファイルを対象とします
4. untracked
- Git によって追跡されないファイルを対象とします
5. branch
- 現在のブランチに色を適用する
6. nobranch
- 「ノー ブランチ」警告が表示されているものの色
7. unmerged
- マージされていない変更があるファイルを色付けします
エイリアス
使用している OS のコマンド ラインにもあるため、エイリアスのコンセプトについては馴染みがあると思います。エイリアスとは長いコマンドを短くしたり、結合コマンドを呼び出すコマンドを定義したりするためのカスタマイズ可能なショートカットです。エイリアスを使うことで時間が短縮でき、よく使うコマンドを入力する手間も省けます。Git には独自のエイリアス システムがあります。Git エイリアスはコミット コマンドの短縮によく使用されます。Git エイリアスは、Git 構成ファイルに保存されています。つまり、git config
コマンドを使ってエイリアスを構成できるのです。
git config --global alias.ci commit
このサンプルでは git commit
コマンドの ci エイリアスを作成します。作成が完了したら、git ci
を実行して git commit
を呼び出せます。また、あるエイリアスから別のエイリアスを参照して、強力な連携コマンドを作成できます。
git config --global alias.amend ci --amend
このサンプルでは、--amend flag
を使う新しいエイリアスに ci エイリアスを記述するエイリアス修正を作成しています。
書式設定と空白
Git には複数の「空白」機能があります。これを構成することで、git diff 使用時の空白の課題を強調表示できます。空白の課題は構成済みの色 color.diff.whitespace
を使って強調表示されます。
以下のフィーチャーはデフォルトで有効となっています。
blank-at-eol
は行末で孤立している空白を強調表示しますspace-before-tab
は行のインデント時にタブのマークの前に表示されるスペースを強調表示しますblank-at-eol
はファイルの末尾に挿入された空白行を強調表示します
以下のフィーチャーはデフォルトで無効となっています。
indent-with-non-tab
はタブではなくスペースでインデントした行を強調表示しますtab-in-indent
は最初のタブ インデントをエラーとして強調表示しますtrailing-space
は blank-at-eol と blank-at-eof の両方の短縮形ですcr-at-eol highlights
は行末から行頭に戻す復帰コードですtabwidth=
はタブが何文字分の幅を取るかを定義します。デフォルト値は 8 で 1 - 63 までの値を指定できます。
要約
この記事では、git config
コマンドの使い方を取り上げました。このコマンドが、ファイル システムにある生の git config
ファイルの編集に威力を発揮する方法であることを説明しました。構成オプションの読み方と書き方の基本について見るとともに、一般的な構成パターンについて取り上げました。
- Git エディターの構成方法
- 構成レベルを上書きする方法
- 構成のデフォルトをリセットする方法
- Git の色をカスタマイズする方法
まとめると、git config
はディスク上の生の git config
ファイルを簡単に編集できるツールということになります。また、個人用カスタマイズ・オプションについて詳しく取り上げました。git 構成オプションの基本的な知識を身に付けておくことが、リポジトリのセット・アップを行うための前提条件になります。以下のチュートリアルでは、基本的な操作を実際に試せます。
この記事を共有する
次のトピック
おすすめコンテンツ
次のリソースをブックマークして、DevOps チームのタイプに関する詳細や、アトラシアンの DevOps についての継続的な更新をご覧ください。