Git の初期設定と更新(Mac)

以下は Mac で Git を最新版にアップデートする方法や初期設定についての覚書です。

作成日:2023年8月8日

関連ページ:

Git のインストール

まず、すでに Git がインストールされているかをターミナルで確認します。

以下の Git のバージョンを表示するコマンド(git -v)を実行します。バージョン情報が表示されれば Git がすでにインストールされています。

% git -v  // または git --version(Git のバージョンを表示)

Mac の場合、Xcode や Command Line Tools for Xcode、Homebrew をインストールしていれば、Apple Git という Git がプリインストールされています(Homebrew をインストールする際に、Command Line Tools for Xcode もインストールされます)。

例えばこの Mac の場合、Homebrew が入っているので、Apple Git がプリインストールされていました。

which コマンドを使うと、どの外部コマンド(実行ファイル)が実行されるかを調べることができます。

% git -v  // バージョンの確認
git version 2.39.2 (Apple Git-143)  // この時点の Git の最新版は 2.41.0 なので少し古い

% which git  // どの git コマンドが実行されるか
/usr/bin/git

インストールされていない場合は、「git コマンドを実行するには、コマンドラインデベロッパツールが必要です。ツールを今すぐインストールしますか?」と表示されるので、画面の指示に従ってツールをインストールすれば、Git もインストールされます。

以下の Git の公式ドキュメントのページには各 OS でのインストール方法が記載されています。

Git を最新版にアップデート

プリインストールされている Git を使うこともできますが、必要に応じて最新版の Git をインストールして利用することもできます。

Homebrew がインストールされていれば、以下のコマンドを実行して最新版の Git をインストールすることができます。

% brew install git  // Git をインストール(少し時間がかかります)

インストールが終了したらバージョンを確認します。

Homebrew でインストールしたパッケージにパスが通っていない場合は、以下のようにプリインストールされている Apple Git のバージョンが表示されます。

% git -v  // Git バージョン確認
git version 2.39.2 (Apple Git-143)  // 今までのバージョンのまま

brew info コマンドでインストールしたパッケージの情報を確認することができます。

関連ページ:Homebrew の使い方(コマンド)

(bottled)と表示されるパッケージは、プリコンパイルされたパッケージを意味し、HEAD と表示されるパッケージは、バージョン管理システムの最新の開発ブランチからビルドされたものを意味するようです。

% brew info git // Homebrew でインストールしたパッケージを確認
==> git: stable 2.41.0 (bottled), HEAD // 最新版
Distributed revision control system
https://git-scm.com
/usr/local/Cellar/git/2.41.0_2 (1,633 files, 48.7MB) *
  Poured from bottle using the formulae.brew.sh API on 2023-07-25 at 11:44:06
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/git.rb
License: GPL-2.0-only
・・・
パスを通す

最新版をインストール後、バージョンを確認した際に Apple Git のバージョンが表示される場合は、Homebrew でインストールした Git にパスが通っていないので、パスを通します

設定ファイル(.zshrc.bash_profile)にコマンド検索パスを追加し、変更を反映させるため source コマンドを実行します。

Intel Mac の場合、Homebrew でインストールしたパッケージは /usr/local/bin に実行ファイルが置かれます(M1 Mac/Apple silicon の場合は /opt/homebrew/bin になります)。

以下は Intel Mac/macOS Ventura で zsh を使用している場合の例です。リダイレクトを使って zsh の設定ファイル .zshrc にコマンド検索パスを追加します。

Intel Mac / zsh の場合の例
% echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc  /// コマンド検索パスを追加
% source ~/.zshrc  ///シェルの設定を反映

バージョンを確認して最新版になっていればインストール完了です。

また、現在どの git コマンドを使うようになっているかは which コマンドで確認できます。

% git -v
git version 2.41.0 // 最新版

% which git  // Git の PATH を確認
/usr/local/bin/git  // Homebrew でインストールした Git
Git をアップデート

Homebrew で Git をインストールすれば、以下の brew upgrade コマンドを実行すれば Git のバージョンをアップデートすることができます。

% brew upgrade git // Git をアップデート
Apple Git へ戻す

Apple Git へ戻す場合は、設定ファイルに追加したパスを削除またはコメントアウトして、Apple Git へのパスを先頭に追加します。

.zshrc の例
# Homebrew でインストールした Git(以下をコメントアウト)
#export PATH=/usr/local/bin:$PATH
# Apple Git へ戻す場合(以下を追加)
export PATH=/usr/bin:$PATH

その後、シェルを再起動(一旦ログアウトして再ログインするか、以下のコマンドを実行)します。

exec $SHELL -l  // シェルを再起動

初期設定

インストールが完了したら git config コマンドに --global オプションを指定して初期設定を行います。

--global オプションを指定した設定はユーザーごとのグローバル設定になります。

別途プロジェクト(リポジトリ)ごとの設定をすることで、プロジェクトごとに異なる設定を追加したり、この設定を上書きすることもできます(設定のレベル)。

Git Reference: git config

ユーザー名と Email アドレスを設定

初期設定では少なくともユーザー名(user.name)と Email アドレス(user.email)を設定します。

% git config --global user.name "John Doe"  // ユーザー名
% git config --global user.email johndoe@example.com  // Email アドレス

上記で設定したユーザー名と Email アドレスは「誰が」変更したかを識別するための情報として使われます。この情報を設定しないとコミットという操作ができないので必ず設定する必要があります。

設定の表示(リスト)

設定した内容は --list または -l オプションを指定して確認することができます。

% git config --global --list
user.name=John Doe  // ユーザー名
user.email=johndoe@example.com  // Email アドレス

また、--global を指定せずに git config --list を実行すると、デフォルトなどの最終的に適用される設定値が全て表示されます。以下は Mac にプリインストールされている Apple Git の例です。

% git config --list
credential.helper=osxkeychain
init.defaultbranch=main  //デフォルトのブランチ名が main に設定されている
user.name=John Doe
user.email=johndoe@example.com

以下は Homebrew でインストールした Git の例です。

% git config --list
credential.helper=osxkeychain
user.name=John Doe
user.email=johndoe@example.com

設定した値を変更

設定した値を変更したい場合は、設定コマンドを再度実行すれば書き換えることができます。

% git config --global user.email john_doe@example.com  // Email アドレスを変更

個々の設定値の確認

Gitに設定されている特定のキーの値を、git config <key> とタイプすることで確認できます。

% git config user.email
john_doe@example.com 

デフォルトのブランチ名を変更

git config --list を実行して、init.defaultbranch=main が設定されていない場合は、デフォルトのブランチ名が初期値の master になっているので、以下を実行してデフォルトのブランチ名を main に設定します。

% git config --global init.defaultBranch main

master 以外であれば任意の名前を設定することができますが、一般的には main が使用されています。

Mac にプリインストールされている Git はデフォルトのブランチ名がすでに main に設定されているので、変更する必要はありません。

※ init.defaultBranch は Git 2.28 で導入された機能なので、それ以前のバージョンでは利用できません。

% git config init.defaultBranch //デフォルトのブランチ名を確認
  main

デフォルトのテキストエディタを変更

Git ではコマンドによってはテキストエディタが起動する場合があり、特に設定していない場合はシェルのデフォルトのテキストエディタ(vim など)が開きます。

デフォルトで起動するテキストエディタは以下で設定することができます。

% git config --global core.editor エディタ名

例えば、デフォルトのテキストエディタを Emacs にする場合は、以下を実行します。

% git config --global core.editor emacs

エディタを VS Code に変更する

デフォルトで起動するテキストエディタを VS Code にするには以下を実行します。

% git config --global core.editor "code --wait"

--wait オプションを使用すると、Git は指定されたテキストエディタを起動した後でも、エディタのプロセスが終了するまで待機します。

これによりユーザーがエディタで作業を行っている間は Git の操作が中断されず、エディタが閉じられるまでコマンドはブロックされます。

例えば、git commit を実行して VS Code が開いてメッセージを編集して保存し、そのタブを閉じるとコミットが実行されます(タブを閉じるまで Git は待機します)。

関連:VS Code を Git のエディタとして設定

参考:

vim に戻す

vim に戻す場合は以下を実行します。

% git config --global core.editor vim

または、core.editor の設定を削除すればデフォルトに戻ります。

% git config --global --unset core.editor  // デフォルトのテキストエディタの設定を削除

設定した値を削除

git config で追加した設定を削除するには、--unset オプションを使います。

% git config --global --unset キーの値

例えば、デフォルトのテキストエディタの設定を削除する場合は、「特定のキーの値」として core.editor を指定します。

まず、現在のテキストエディタの設定を確認します。

以下の例の場合は、core.editor(デフォルトのエディタ)に Emacs が設定されています。もし、何も設定されていない場合は、何も返されません(表示されません)。

% git config --global core.editor  // core.editor に設定されている値を確認
emacs  // Emacs に設定されている

また、設定は --list または -l オプションでリスト(一覧)表示させることもできます。

% git config --global -l  // グローバル設定を一覧表示
user.name=foo
user.email=foo@example.com
init.defaultbranch=main
core.editor=emacs  // デフォルトのエディタに emacs が設定されている

以下を実行すると、デフォルトのテキストエディタの設定を削除します。

% git config --global --unset core.editor  // デフォルトのテキストエディタの設定を削除

設定を一覧表示させると、設定が削除されいるのが確認できます。

% git config --global -l
user.name=foo
user.email=foo@example.com
init.defaultbranch=main

設定のレベル(種類)

git の設定(git config)は、オプションでシステム全体(--system)、ユーザーの全リポジトリ(--global)、対象リポジトリのみ(--local)に分けて設定することができます。

--local はデフォルトなので指定を省略することができます。

通常、よく使うのはユーザー設定(--global)になります。

コマンドオプション 適用範囲 設定ファイルの場所
--system システム上の全ユーザーの全リポジトリ /usr/local/etc/gitconfig(インストールにより異なります)
--global 該当ユーザーの全リポジトリ ~/.gitconfig(ユーザーのホームディレクトリ内)
--local デフォルト 設定したリポジトリ .git/config(個々の Git リポジトリ内)

優先順位

設定ファイルは system → global → local の順に読み込まれ、後から読んだ値がその前の値を上書きするので、local が最も優先され、system が最も優先順位が低くなります。

設定ファイル

git config コマンドに --global オプションを指定した場合、特定のユーザーに対する設定になります。

Mac の場合、--global オプションを指定した設定は ~/.gitconfig(ユーザーのホームディレクトリの .gitconfig)に保存されます。

% cat ~/.gitconfig ///ユーザーの設定ファイルを表示
[user]
  name = John Doe
  email = john_doe@example.com
[init]
  defaultBranch = main

git config コマンドに --global オプションを指定した設定は以下のコマンドでも確認でき、設定ファイル(~/.gitconfig)に保存されている内容が表示されます。

% git config --global --list
user.name=John Doe
user.email=john_doe@example.com
init.defaultbranch=main

--global オプションを指定した特定のユーザーに対する設定以外にも、必要に応じてシステム全体の設定や個々のリポジトリ(プロジェクト)ごとの設定も可能で、それぞれの設定ファイルが存在します。

例えば、git init コマンドでプロジェクトを Git で初期化すると、リポジトリ(.git)が作成され、その中にプロジェクト固有の設定ファイル(.git/config)が作成されます。

プロジェクト固有の設定を登録したい場合は、そのディレクトリに移動して --global をつけずに設定するとその設定が .git/config に記述され、ユーザー設定より優先されます。

~/.gitconfig を編集

以下のコマンドを実行すると、デフォルトのエディタでユーザーの設定ファイル(~/.gitconfig)が開くので編集して、設定を変更することができます。

% git config --global -e

git config コマンドに -e または --edit オプションを指定して実行することで設定ファイルを編集することができます。

デフォルトのエディタが vim の場合は、上記を実行すると以下のように vim が起動して設定ファイル(~/.gitconfig)が開きます。

何もせずに終了するには :q と入力後、return キーを押します。

デフォルトのエディタを VS Code に設定してある場合は、以下のように VS Code で設定ファイル(~/.gitconfig)が開きます。

必要に応じてファイルを編集後、保存して閉じれば、設定が反映されます。

※ この場合、設定ファイルを閉じるまで、Git は待機します。設定ファイルを閉じるとコマンドラインのプロンプトが戻ります。

関連項目:設定ファイルを編集

管理から除外するファイルを指定

Mac の .DS_Store など、Git で管理する必要のないファイルはグローバルに(ユーザー単位で) Git の管理から除外するように設定しておくと便利です。

~/.config/git/ignore というファイルを作成し、管理から除外するファイルを指定することで、それらのファイルを全てのプロジェクトのリポジトリで管理から除外することができます。以下がその方法です。

ユーザーのホームディレクトリの .config ディレクトリの中に git ディレクトリを作成します。

mkdir に -p オプションを指定すると、.config ディレクトリが作成されていない場合は、そのディレクトリも作成してくれます。

% mkdir -p ~/.config/git  //.config/git ディレクトリを作成 

.config/git の中に ignore という名前のファイルを作成し、無視するファイルなどを指定します。

この例では Mac で自動的に生成される .DS_Store というファイルを無視するように指定します。

% echo '.DS_Store' >> ~/.config/git/ignore  ///ignore を作成し .DS_Store を記述

上記ではリダイレクトで ignore ファイルに追記していますが、touch で ignore という名前のファイルを ~/.config/git/ に新規作成し、vim などで編集して記述することができます。

必要に応じて無視するファイルやディレクトリ、パターンを改行して(1行に1つずつ)追加することができます。記述方法は .gitignore と同じです。

~/.config/git/ignore の例(Mac の場合)
.DS_Store
.AppleDouble
.LSOverride

Reference/gitignore

プロジェクト単位での除外設定

特定のプロジェクトのディレクトリやファイルに対して除外設定をするには、そのプロジェクトのディレクトリに .gitignore という名前のファイルを作成して除外対象を記述します。

.gitignore を設置したディレクトリとその下位のディレクトリで、指定した除外設定が有効になります(詳細:Git の管理から除外する)。