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で管理することで、効率的で快適な開発が可能になります。この記事で紹介した設定以外にも様々な項目があるので、実際に試しながらぜひ自分に合った設定を探してみてください!

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

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

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

関連記事