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を学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.06.02
リポジトリ内の探しものは「git grep」で効率的な検索テクニックを紹介
「git grep」コマンドを使用すると、リポジトリ内のファイルを一度に検索することができて、とても便利なのです。そんなリポジトリ内を一斉検索できる便利なコマンド、「git grep」をこの記事で解説します。
- git
2024.05.08
リリース管理に欠かせない!コミットにタグを付ける「git tag」コマンドの使い方
アプリ開発において「Git」は必須スキルとなってきます。Gitの基本コマンドは知っているけど他のコマンドはよく知らない、Gitコマンドをもっと知って便利に使いたい!と思っている方、また特定のコミットに普遍的な目印をつけたい!や、リリースバージョンを管理したい!という方向けに、この記事では「git tag」について解説します。
- git
2024.05.12
「git clean」でプロジェクトの整理を!安全にきれいを保つ方法
「git clean」を使用すると、プロジェクト内で不要となったファイルを効率的にクリーンアップすることが可能です。
- git