8.

Git ユーザー名/Email 設定完全ガイド

編集
この記事の要点
  • git config --global user.name "Your Name"user.email "your@example.com" が初期設定の必須2項目
  • スコープ: --global(~/.gitconfig 全リポジトリ)/ --local(当該リポ .git/config のみ)/ --system(OS 全体)
  • GitHub に email を露出させたくない場合は privacy email(XXX+username@users.noreply.github.com)を使用
  • プロジェクトごとに使い分け: includeIf "gitdir:~/work/" で /work と /personal で別 user を自動切替
  • コミット署名: GPG / SSH 署名鍵で commit に "Verified" バッジを付与可能

最低限の初期設定

Git をインストールしたら最初にやる設定です:

# 全リポジトリ共通の名前と email
git config --global user.name "Yamada Taro"
git config --global user.email "taro@example.com"

# その他の推奨初期設定
git config --global init.defaultBranch main
git config --global pull.rebase true
git config --global core.editor "vim"
git config --global core.autocrlf input        # Linux/macOS
git config --global core.autocrlf true         # Windows

# 確認
git config --global --list
git config --get user.name
git config --get user.email

スコープ: global / local / system

スコープ保存先対象範囲
--system/etc/gitconfig(OS 全体)全ユーザの全リポジトリ
--global~/.gitconfig(ユーザ毎)そのユーザの全リポジトリ
--local.git/config(リポ毎、デフォルト)当該リポジトリのみ
--worktree.git/config.worktree多重 worktree 別個(Git 2.20+)

優先度は local > global > system。リポジトリ内で local が設定されていれば、それが global を上書きします。

# プロジェクト毎に別 email を使う
cd ~/work/company-project
git config --local user.email "taro@company.co.jp"

# 確認(local 優先で表示)
git config user.email          # → taro@company.co.jp
git config --global user.email # → taro@example.com(個人用)

GitHub のプライベート Email

GitHub にコミットすると、デフォルトでは設定した email がコミット履歴に露出します。スパム / 個人特定対策で、noreply email が用意されています:

  1. GitHub Settings → Emails → Keep my email addresses private をオン
  2. 表示される 12345678+username@users.noreply.github.com をコピー
  3. Git に設定
git config --global user.email "12345678+username@users.noreply.github.com"

# 既存リポジトリで過去コミットの email も書き換えたい
git config --local user.email "12345678+username@users.noreply.github.com"
git rebase -i --root --exec "git commit --amend --reset-author --no-edit"
# ⚠ 履歴書き換え。共有リポでは禁止

仕事用 / 個人用の自動切替

includeIf 機能を使えば、ディレクトリパスに応じて自動で設定を切り替えられます:

# ~/.gitconfig
[user]
    name = Yamada Taro
    email = taro@personal.example.com

[includeIf "gitdir:~/work/"]
    path = ~/.gitconfig-work

[includeIf "gitdir:~/oss/"]
    path = ~/.gitconfig-oss
# ~/.gitconfig-work
[user]
    email = taro@company.co.jp
    signingkey = ABCD1234FEDC

[commit]
    gpgsign = true
# ~/.gitconfig-oss
[user]
    email = 12345678+yamada@users.noreply.github.com

これで ~/work/ 配下では会社 email、~/oss/ 配下では GitHub noreply email を自動で使い分けます。

署名付きコミット (GPG / SSH 署名)

コミットを暗号署名することで、GitHub 上に Verified バッジが付きます。なりすまし防止に有効:

GPG 鍵

# GPG 鍵を生成
gpg --full-generate-key
# RSA 4096 / 期限 / 名前 / email を入力

# 鍵 ID を取得
gpg --list-secret-keys --keyid-format=long
# sec   rsa4096/ABCD1234EFGH5678 2024-01-01 [SC]

# Git に登録
git config --global user.signingkey ABCD1234EFGH5678
git config --global commit.gpgsign true
git config --global tag.gpgsign true

# GitHub に公開鍵を登録
gpg --armor --export ABCD1234EFGH5678
# 出力を GitHub Settings → SSH and GPG keys → New GPG key に貼り付け

SSH 鍵で署名 (Git 2.34+)

# 既存の SSH 鍵 (~/.ssh/id_ed25519) を流用可能
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true

# allowed_signers ファイル設定(検証用)
echo "taro@example.com $(cat ~/.ssh/id_ed25519.pub)" >> ~/.ssh/allowed_signers
git config --global gpg.ssh.allowedSignersFile ~/.ssh/allowed_signers

# GitHub の SSH キー登録画面で "Signing Key" タイプを選択

確認・修正

# 設定一覧(優先度順、上書き解決済)
git config --list

# 各スコープ個別
git config --global --list
git config --local --list
git config --system --list

# どこで設定されたか追跡
git config --show-origin --get user.email
# file:/home/taro/.gitconfig    taro@example.com

# 値の削除
git config --global --unset user.name
git config --local --unset user.email

# 直接ファイル編集
git config --global --edit          # ~/.gitconfig を $EDITOR で開く

よくあるトラブル

「Please tell me who you are」エラー

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'taro@DESKTOP.(none)')

name / email が未設定か、リポジトリ固有の設定が必要です。上記コマンドで設定してください。

過去コミットの author を一括変更

# 個人 → 会社 email に書き換え(共有リポでは禁止)
git filter-branch --env-filter '
OLD_EMAIL="taro@personal.example.com"
NEW_NAME="Yamada Taro"
NEW_EMAIL="taro@company.co.jp"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]; then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]; then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

# モダンには git-filter-repo を使う
pip install git-filter-repo
git filter-repo --email-callback '
  return email.replace(b"taro@personal.example.com", b"taro@company.co.jp")
'

GitHub で「Unverified」バッジが付く

署名鍵を GitHub に登録していないか、コミット時の email と GitHub アカウントの email が一致していません。GitHub Settings → Emails と、Settings → SSH and GPG keys を確認。

ベストプラクティス

  • ~/.gitconfig は git 管理(dotfiles リポ)に入れて複数 PC で共有
  • 仕事メールは local または includeIf でディレクトリ毎に設定(個人リポに会社 email が紛れ込むのを防ぐ)
  • OSS への commit は GitHub noreply email を使う
  • セキュリティ重視なら GPG / SSH 署名を有効化
  • 新人オンボーディングで git config --global init.defaultBranch main など合わせて設定

FAQ

Q: 設定した email が GitHub に紐づかない
A: コミットの email と、GitHub アカウントに登録された email が一致する必要あり。GitHub Settings → Emails で複数登録可能。

Q: user.useConfigOnly = true は?
A: user.name / user.email が未設定のときに自動推測(hostname など)させない。会社 PC の (none) 混入防止に有効。

Q: 仕事の commit を間違って個人 email で push してしまった
A: 共有前なら git commit --amend --author="Name <new@email>" で直近修正可能。push 済なら filter-repo で書き換え + force push(事前にチーム合意)。

関連

  • git config — 設定操作のメインコマンド
  • git commit --amend — 直近 author 修正
  • git filter-repo — 履歴書き換え(モダン)
  • GitHub Verified Commits — 署名による信頼性向上
編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 用語一覧
  2. エラー一覧
  3. git本体のインストール(Linux)
  4. Linuxサーバーへのgit導入とクライアントのセットアップ
  5. リモートリポジトリをローカルリポジトリとしてクローンする方法
  6. リモートとローカルのリポジトリを同期(pull)する方法
  7. 設定の確認
  8. gitユーザー名とemailの設定
  9. リモートリポジトリの作成
  10. ローカルリポジトリの作成
  11. 新規ファイル/ディレクトリをインデックスに登録
  12. インデックスの登録状態を確認
  13. ローカルリポジトリの変更をコミット
  14. コミット履歴の確認
  15. クライアントからリモートリポジトリの接続設定、確認、削除
  16. リポジトリへのプッシュ
  17. リモートリポジトリからクライアントへのSSHクローン
  18. リモートとローカルの差分表示
  19. バージョンの確認
  20. プロキシの設定
  21. ローカルをリモートリポジトリの状態に戻す
  22. ブランチの作成, 一覧表示, 切り替え
  23. ブランチのマージと削除
  24. リベース
  25. .gitignoreの書き方
  26. .gitignoreの設定が反映されない場合
  27. 特定のファイルをgitの管理から外す方法
  28. 参照(ORIG_HEAD, HEAD, FETCH_HEAD)
  29. git rm [-r --cached] の取り消し
  30. 一部のディレクトリ/ファイルのみをリポジトリから復元する方法
  31. ローカルとリモートリポジトリの有無を同期
  32. pushの取消し方法
  33. マージツールの起動方法
  34. Gitで「MERGING」の状態

最近更新/作成されたページ