`git config`で設定できる事

# はじめに
`git`をある程度使うようになると、「自身に合った設定にカスタマイズしたい！」なんて考えたことありませんか？今回はそんな`git`をカスタマイズする方法について着目し記事にしました。

# `git config`とは
`git config`は、Gitの動作をカスタマイズするためのコマンドです。ユーザー情報、エディタの設定、エイリアスなど、様々な設定を管理できます。

## 3つのスコープ
Gitの設定には3つの異なるスコープがあり、それぞれ優先順位が異なります
下記のものは上から優先順位が低い順です。
```bash
git config --system  # システム全体の設定 (/etc/gitconfig)
git config --global  # ユーザーの全リポジトリの設定 (~/.gitconfig)
git config --local   # 特定のリポジトリの設定 (.git/config)
```
:::note info
#### `system`と`global`の違い
- `--system`: マシン上の全ユーザーに適用される設定
- `--global`: 現在のユーザーの全リポジトリに適用される設定
:::


## コマンドの書き方
基本的な設定の構文は以下の通りです
```bash
# グローバル設定
git config --global <設定項目名> <値>

# リポジトリ固有の設定
git config --local <設定項目名> <値>

# 設定の確認
git config --list
git config <設定項目名>

# 設定をリセットする
git config --global --unset <設定項目>
```

# configのカテゴリ

## core
`core`は基本的な動作に関する設定を行います。
### エディタと表示
- `core.editor`: Git がユーザーに入力を求めるときに使用するデフォルトのテキストエディタを設定する 
    ```bash
    git config --global core.editor "vim"  # vimを使用
    ```
    :::note info
    #### エディターとコマンドの相対表
    |エディタ名|コマンド|
    |--|--|
    |`Vim`|`git config --global core.editor "vim"`|
    |`Nano`|`git config --global core.editor "nano"`|
    |`Visual Studio Code`|`git config --global core.editor "code --wait"`|
    |`Emacs`|`git config --global core.editor "vim"`|
    |`Goland (macOS)`|`git config --global core.editor "/Applications/GoLand.app/Contents/MacOS/goland --wait"`|
    
　
- `core.pager`: Git コマンドの出力が多い場合に内容を表示するツール（ページャー）を設定する
    ```bash
    git config --global core.pager ""  # ページャーを無効化
    ```
    :::note info
    #### ページャーとは
    ページャーは、内容が一度に収まりきらないとき、スクロールして内容を確認できるツールです。
    `git log`や`git diff`などで出力される内容が多い場合に使用されます。

### ファイル設定
- `core.fileMode`: ファイルの実行権限（`chmod`）変更を追跡するか設定する
    ```bash
    git config --global core.fileMode true  # 権限変更を追跡
    git config --global core.fileMode false # 権限変更を無視
    ```

　
- `core.ignorecase`: ファイル名の大文字小文字を区別するか設定する
    ```bash
    git config --global core.ignorecase true  # 区別しない
    git config --global core.ignorecase false # 区別する
    ```
    
## user
`user`はユーザー情報の設定をするカテゴリです。
- `user.name`: コミットに使用する名前
    ```bash
    git config --global user.name "Your Name"
    ```

　
- `user.email`: コミットに使用するメールアドレス
    ```bash
    git config --global user.email "your.email@example.com"
    ```
## http（通信設定）
### バッファとプロキシ
- `http.postBuffer`: `POST` リクエスト時のバッファサイズを設定する
    サイズが大きなファイルを送信する際に利用します。
    ```bash
    git config --global http.postBuffer 524288000  # 500MB
    ```

　
- `http.proxy`: プロキシサーバーを設定する
    HTTP 通信をプロキシ経由で行う場合に利用します。
    ```bash
    git config --global http.proxy http://proxy.example.com:8080
    ```
### セキュリティ
- `http.sslVerify`: `SSL 証明書`の検証を有効化/無効化する
    
    ```bash
    git config --global http.sslVerify false  # 証明書検証を無効化（非推奨）
    ```
    :::note warn
    セキュリティのため、SSL証明書の検証を無効化することは推奨されません。

　
- `http.cookieFile`: HTTP リクエスト時に使用するクッキーを保存するファイルを指定する
    ```bash
    git config --global http.cookieFile ~/.gitcookies
    ```

## color（色設定）
### 基本設定
- `color.ui`: Git 全体の色設定を有効化
    ```bash
    git config --global color.ui auto # 自動で色をつける

    git config --global color.ui false # 色なし
    ```
### 個別設定
- `color.branch`: ブランチ名の表示色を設定
    ```bash
    git config --global color.branch.current "green bold"
    git config --global color.branch.local "yellow"
    git config --global color.branch.remote "red bold"
    ```
- `color.diff`: 差分の表示色を設定
    ```bash
    git config --global color.diff.meta "yellow bold"
    git config --global color.diff.frag "magenta bold"
    git config --global color.diff.old "red bold"
    git config --global color.diff.new "green bold"
    ```
    
## alias
Git のコマンドを簡略化するためにエイリアスを設定できます
```bash
git config --global alias.<短縮名> "<実行するコマンド>"
```

# おわりに
今回紹介したものは、gitの設定の一部分に過ぎません。より詳細な設定や最新の情報については、公式ドキュメントを参照することをお勧めします。

# 参考
https://git-scm.com/book/ja/v2/Git-のカスタマイズ-Git-の設定