【2021年版】git config のおすすめ初期設定

git config

仕事で使っていたPCがぶっ壊れてしまい、新しいPCの設定をしてたときにgit configに何を設定していたのかを完全に忘れていたので、復習がてら設定内容の確認方法とかをメモして見ようと思いました。

最初に設定しておくと捗る設定などもあったので参考になれば幸いです

git config とは?

gitの設定ファイルのことで、デフォルト以外の挙動を定義することができます。

gitの設定は下記の3箇所で設定ができ、systemgloballocalの順番で設定が読み込まれます。

優先度は下記のようになっているため、例えばgloballocalで同じ項目でそれぞれ別の設定が書かれている場合、localが最終的に有効な値となります。

scope概要path優先度
systemシステム全体の共通設定/etc/gitconfig
globalcurrent user共通の設定。基本これを使う~/.gitconfig
localリポジトリごとの設定.git/config
git config のスコープ

基本的にはgit config <サブコマンド>で設定を行いますが、上記のconfigファイルを直接編集することで変更することもできます。

ただ、個人レベルで設定をいじることがほとんどなので、その場合は基本的にはglobalの設定を変えるだけで良いことがほとんどです。

設定内容の確認方法

現在の設定内容は下記のコマンドで確認ができます

git config -l

下記のように設定している内容が出力されます、ここの出力結果はすべての設定ファイルを読み込んだ結果となります。

credential.helper=osxkeychain
user.name=“hogehoge”
user.email=example@example.com
alias.cm=commit
alias.co=checkout
alias.sw=switch
alias.gr=grep
alias.graph=log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s'
grep.linenumber=true
init.defaultbranch=main
push.default=current
pull.ff=only
core.quotepath=false

globalのみ確認したい場合

オプションを付ければ確認できる

git config -l --global

自分でエディタから編集することも可能です。ただ、configファイルを編集しているだけなので実質下記の2つは同じ挙動になります

git config -e --global

or

vim ~/.gitconfig
[user]
   name = “hogehoge”
   email = example@example.com
[alias]
   cm = commit
   co = checkout
   sw = switch
   gr = grep
   graph = log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s'
[grep]
   lineNumber = true
[init]
   defaultBranch = main
[push]
   default = current
[pull]
   ff = only
[core]
   quotepath = false

おすすめの初期設定

ユーザー名とメールアドレスの設定

誰もが通る初期設定です。

ここを設定せずにコミットするとPCのユーザー名などがコミットログに残り恥ずかしい思いをするので最初に設定してしまいましょう

git config --global user.name "hogehoge"
git config --global user.email "sample@example.com"

pushするときのdefaultブランチを設定

pushするときのdefaultで現在のブランチにpushするように設定します

git config --global push.default current

これをしていない場合、`git push`したときにリモートブランチを指定しろと怒られるのですがそれがなくなります。地味に重宝している設定の一つです

pullするときにfast-forwardマージのみ有効にする

ここに関しては好みの世界ですがpullの設定になります。

pullは基本的には、remoteブランチからgit fetchをしてlocalブランチにgit mergeする挙動になります。そのため、localのコミットとremote側のコミットログに差分があった場合はmergeコミットが自動的に作成されます。

個人的にはここでのmergeコミットは無駄に分岐のログが作られてしまう事が多くあまり必要ないと思っております。それを解決するのがpullの設定になります。

fast-forwardマージとは?

そもそもfast-forwardマージとは、pull先のremoteブランチがlocalブランチの分岐時から変更がなかった場合、単純に分岐先のコミットがそのまま移動されてマージされることを指します。

下記の記事で詳しく図式して紹介しているのでおすすめです。

Git 2.27 での git pull 時の warning について – Qiita

fast-forward only

下記の設定をしておくと、fast-forwardマージ可能な場合のみpullを行います。そうでない場合はmergerebaseもせずにエラー終了します。

git config --global pull.ff only

こうすることで意図しないmergeコミットが作られなくなり、rebaseもされなくなります。

もしエラーが出た場合は、改めてpullする際にrebaseオプションを追加することでいい感じに1直線のコミットログが作られることになります。

git pull --rebase

このあたりの挙動になれてきたら、下記の設定をしておくとfast-forwardマージできない場合はrebaseをしてくれるようになります。

git config --global pull.rebase true

ただ、rebaseの挙動が理解できていないうちは下記の設定はせずにfast-forwardマージのみ許可しておくのが安全策かな、と思います。

ちなみにバージョン2.27以降pull時の設定を指定しない状態でgit pullすると警告がでるようになっています。

git init時にmainブランチを作成する

古いgitのバージョンだと新しいリポジトリでgit initしたときにデフォルトのmasterブランチが作られてしまう。下記のような警告が表示されるので書いてあるとおりにデフォルトのブランチを変更しておくと良いです。

$ git init                                                                                                                                                                                                                                                                                                                                [~/project/surveillance-script]
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>

警告の通り、下記のコマンドをを実行すればOK。

git config --global init.defaultBranch main

そもそもmasterからmainに変わった背景は下記の記事を参照してください。

GitHub、これから作成するリポジトリのデフォルトブランチ名が「main」に。「master」から「main」へ変更 - Publickey

grep時に行数を表示する

見出し通りですが、git grepをしたときに行数を表示してくれるオプションです。

git config --global grep.lineNumber true

下記のように同一ファイルで結果が複数ある場合などに助かります。

app/controllers/admin/communities_controller.rb:26:      redirect_to admin_community_path(@community), notice: message
app/controllers/admin/communities_controller.rb:35:      redirect_to admin_community_path(@community), notice: message
app/controllers/admin/communities_controller.rb:44:    redirect_to admin_communities_url, notice: message
app/controllers/admin/communities_controller.rb:57:  def require_admin

参考にさせていただいたサイト

Git – Git の設定

ブランチの統合|サル先生のGit入門【プロジェクト管理ツールBacklog】

Gitを使い始めたら一番最初にやりたい git config設定メモ

Gitの設定をgit configで確認・変更 | note.nkmk.me

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です