1. ホーム
  2. 記事一覧
  3. 快適なGitライフをサポートする「git config」コマンドとは?

2024.05.06

快適なGitライフをサポートする「git config」コマンドとは?

Gitは現代のソフトウェア開発において必須のバージョン管理ツールです。今回ご紹介するコマンドでGitの設定を適切に行うことで、より効率的で安全な開発が可能になります。そのためこの記事では、Gitの設定を管理し、より快適なGit操作をこなうことができるようになるgit configコマンドについて解説します。

「git config」でできること

「git config」コマンドでできることは多岐に渡りますが、以下はその一例です。

  • ユーザー情報(名前、メールアドレス)の設定
  • リポジトリの挙動をカスタマイズする様々なオプションの設定
  • Gitコマンドのエイリアスを作成すること
  • Git操作で使うデフォルトのテキストエディターの設定

「git config」の使い方

基本操作

早速使い方を学びましょう。

  • 設定の表示や操作
git config [オプション]
  • 設定の登録
git config [オプション] <キー> <値>

キーはさらに<セクション>.<サブセクション>.<キー>のという階層になっており、設定したい項目により異なります。また、サブセクションは存在するものとしないものがあります。具体例を見てみましょう。

以下は、コミットに登録、表示されるユーザーの情報を設定するコマンドです。

# --globalが後ほど説明するオプション、user.nameがキーです
git config --global user.name "Taro Yamada"

このコマンドでキーに該当するuser.nameは、<セクション>.<キー> という構成で成り立っています。サブセクションキーについては後ほど再度ご説明します。

オプション

では、先ほどのコマンドで--global に当たるオプションを見ていきましょう。「git log」のオプションでは、設定のスコープ(範囲)を指定するものと、それ以外の2種類があります。

設定のスコープを指定するオプション

オプションスコープ設定ファイルの場所
--systemシステム全体/etc/gitconfig
--globalユーザー全体~/.gitconfig
--local現在のリポジトリのみ.git/config

※ 明示的に何も指定しない場合はデフォルトで--local が指定されます。また、適用の優先順位はLocal > Global > Systemの順番です。なお、ファイルを直接編集することで設定を変更することも可能です。

それ以外の主なオプション

—list のみ-l と省略できます。

オプション内容
--list現在の設定を一覧表示する
--unset指定した設定を削除する
--get指定した設定の値を取得する
# 一覧を表示する
git config --list

user.name=Fred
user.email=fred@example.com
alias.br=branch
alias.sw=switch

# user.nameを取得
git config --get user.name

Fred

# user.nameを削除
git config --unset user.name

サブセクションについて

先ほどご説明した通り、キーは<セクション>.<サブセクション>.<キー> という形式で成り立っていますが、サブセクションどんな時に使用されるのでしょうか。実際にどんな設定値にサブセクションが存在するか確認するためには2通りの方法があります。1つ目は上記のようにオプションの--list で一覧表示すること、もう1つは設定ファイルが保存されているファイルの中身を確認することです。

実際に調べて結果を確認してみましょう。

# 一覧を表示する
git config --list

remote.origin.url=git@github.com:<ユーザー名or組織名/リポジトリ名>.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.main.remote=origin
branch.main.merge=refs/heads/main
blame.ignoreRevsFile=.git-blame-ignore-revs

--list オプションを使用した場合、サブセクションが存在するものは設定するときと同じように<セクション>.<サブセクション>.<キー>という形式で表示されました。(「blame.ignoreRevsFile」には存在しない)では次に、ファイルの中身を確認する方法で実施してみましょう。

# localオプションでそのローカルリポジトリの設定を確認
cat .git/config

[remote "origin"]
	url = git@github.com:<ユーザー名or組織名/リポジトリ名>.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main
[blame]
	ignoreRevsFile = .git-blame-ignore-revs
...

「[](ブラケット)」で囲まれているのがセクション名で、その中でも「””(ダブルクオーテーション)」で囲まれているのがサブセクション名です。リモートリポジトリを「origin」という名前に指定している場合、それがサブセクション名として表示されています。

通常リモートの情報を追加、更新するにはgit remote コマンドを更新することが一般的ですが、git remote コマンドでの設定が記載されるのは上記の通りgit config と同様のファイルなので、git config コマンドでもサブセクションを使用して同様の設定が可能です。

# まずリモートの情報(remote.origin.urlとremote.origin.fetchを登録)
git remote add origin git@github.com:<ユーザー名or組織名/リポジトリ名>.git

# 通常リモートの情報を更新するときはgit remote set-urlコマンドを使用するが、
# configとサブセクションで同様のことができる
git config remote.origin.url=git@github.com:<ユーザー名or組織名/別のリポジトリ名>.git

役立つ設定の例

エイリアスの設定

よく使うGitコマンドに対して、エイリアスを作成します。エイリアスとは「別名」の意味を持つ言葉で、以下の例だとgit branch というコマンドを省略してgit br と入力することで同じ操作ができるようになります。また、「br」や「sw」ではなく、「b」や「s」の一文字だけなど、好きなように設定することが可能です。

# git branchに対してgit brというエイリアスを設定
git config --global alias.br branch
# git switchに対してgit swというエイリアスを設定
git config --global alias.sw switch

テキストエディタの設定

git rebaseコマンドなどでテキストを編集する際のデフォルトのエディタを指定できます。基本的には--global でユーザーごとに設定するのがいいでしょう。

# VS Codeを指定する
git config --global core.editor "code --wait"
# Sublime Textを指定する
git config --global core.editor "subl -n -w"
# Vimをオプション付きで使用する
git config --global core.editor "vim -c 'set spell'"
# オプションが必要ない場合、以下の通り 「" "」 は不要です。
git config --global core.editor vim

core.editor に続く部分でエディタを開くコマンドを指定します。VS Code の--wait やSublime Text の-w はエディタで編集を終えるまでGitが待機し、エディタを閉じた後に操作が再開されるようにするオプションです。

色々なカスタマイズ

git init した際のデフォルトのブランチ名を指定、変更することができます。

git config --global init.defaultBranch main

コミットする際のデフォルトメッセージを指定できます。ファイル名と場所は自由です。

git config --global commit.template ~/.gitmessage

git pushでプッシュする際にリモートブランチを指定しなくてもローカルブランチと同じ名前のブランチにプッシュし、リモートに同名のブランチがなければ作成してくれるようにする設定です。

git config --global push.default current

※ ただ、git pullをする場合はアップストリームを指定しない限り依然としてリモートブランチの指定が必要なことに注意しましょう。そのため、プルを簡単に行うために上記設定をしていても最初のプッシュ時にgit push -u origin <ブランチ名> をすることをお勧めします。

まとめ

この記事ではGitの設定を管理するgit configコマンドについて学びました。ユーザー情報やエディタ、エイリアスなど、開発に必要な設定をgit configで管理することで、効率的で快適な開発が可能になります。この記事で紹介した設定以外にも様々な項目があるので、実際に試しながらぜひ自分に合った設定を探してみてください!

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事