0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows版Git設定とGit Credential Managerセットアップガイド

Last updated at Posted at 2025-12-09

1. 背景と仕組み

なぜ認証情報の管理が必要か

GitでHTTPS経由のリモートリポジトリ(GitLab等)にアクセスする際、毎回ユーザー名とパスワード(またはアクセストークン)の入力が求められる。これを省略するため、認証情報を安全に保存・自動入力する仕組みが必要になる。

Git Credential Manager(GCM)とは

Gitには認証情報を管理するための「credential helper」という拡張機構がある。GCMはMicrosoftが開発したcredential helperの実装で、Git for Windowsに標準同梱されている。

GCMの役割は以下の通り。

  • 初回認証時にユーザーから認証情報を取得
  • Windows資格情報マネージャーに暗号化して保存
  • 次回以降、Gitからの認証要求に対して保存済み情報を自動返却

Windows資格情報マネージャーとの関係

Windows資格情報マネージャーはOS標準の認証情報保管庫で、Webブラウザやアプリケーションの認証情報を暗号化して管理する。GCMはこの保管庫をバックエンドとして利用することで、平文ファイルへの保存を避け、セキュアな認証情報管理を実現している。

認証フローの全体像

1. git push/pull 実行
        ↓
2. Gitがcredential helperに認証情報を問い合わせ
        ↓
3. GCMがWindows資格情報マネージャーを検索
        ↓
4a. 保存済み → 認証情報を返却 → 認証成功
        or
4b. 未保存 → ユーザーに入力要求 → 保存して認証


2. GCM固有のGit configオプション解説

GCMを使う上で理解すべき設定オプションは3つある。

credential.helper

どのcredential helperを使用するかを指定する。Windowsでの選択肢は以下の通り。

manager - GCMを使用。Windows資格情報マネージャーに暗号化保存される。Windows環境での推奨値。

store - ホームディレクトリの.git-credentialsファイルに平文保存。セキュリティ上非推奨。

cache - メモリ上に一時保存。タイムアウトで消失する。Linux向けの設計でWindowsでは非推奨。

wincred - GCM登場前の旧実装。現在はmanagerに置き換えられており非推奨。

credential.credentialStore

GCMが認証情報を保存する場所を指定する。credential.helpermanagerの場合に有効。

wincredman - Windows資格情報マネージャー。Windows環境での推奨値。

dpapi - DPAPIで暗号化したファイル。資格情報マネージャーが使えない環境向け。

plaintext - 平文ファイル。セキュリティ上非推奨。

gpg - GPGで暗号化したファイル。Linux/macOS向け。

credential..provider

特定URLに対して、どの認証プロバイダー(OAuth等の認証方式)を使うかを指定する。GitHubやAzure DevOpsはGCMが自動認識するが、GitLabのセルフホスト版は認識されないため明示的にgenericを指定する必要がある。

genericを指定すると、GCMは単純なユーザー名・パスワード認証として処理する。


3. インストールと設定手順

前提環境

  • OS: Windows 10/11
  • 開発環境: WSL2 + Windows併用
  • 対象リポジトリ: GitLab(HTTPSアクセス)

Git for Windowsのインストール

公式サイトからインストーラーをダウンロードし、デフォルト設定で実行する。GCMは自動的に含まれる。

インストール確認はPowerShellまたはコマンドプロンプトで行う。

git --version
git credential-manager --version

推奨設定の適用

以下の設定を順に実行する。各設定の意味は第2章を参照。

git config --global credential.helper manager
git config --global credential.credentialStore wincredman
git config --global credential.https://github.com/(通信先).provider generic
git config --global credential.username nishijima.yasutaka(Your Name)
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

設定確認

全設定を表示する場合。

git config --global --list

認証関連のみ抽出する場合(PowerShell専用)。

git config --global --list | Select-String credential

コマンドプロンプトの場合はfindstrを使用する。

git config --global --list | findstr credential

4. 運用と管理

Windows資格情報マネージャーでの確認

Windowsスタートメニューから「資格情報マネージャー」を検索し、「Windows資格情報」→「汎用資格情報」を開く。git:https://github.com形式の項目が保存された認証情報。

認証情報の削除

GCMコマンドで削除する場合。

git credential-manager erase

実行後、以下を入力してEnterを2回押す。

protocol=https
host=https://github.com

GUIから削除する場合は、資格情報マネージャーで該当項目を選択し「削除」をクリック。

トラブルシューティング

Failed to write item to store. [0x8]エラー

Windows資格情報マネージャーへの書き込み失敗。資格情報マネージャーに保存されている項目が多すぎる場合に発生することがある。不要な項目をGUIから削除するか、以下のコマンドで一括削除する(PowerShell専用)。

cmdkey /list | Select-String "vscode" | ForEach-Object {
    $target = ($_ -split " ")[-1]
    cmdkey /delete:$target
}

認証が通らない場合

確認すべき項目は以下の通り。

  • git config --global --listで設定内容を確認
  • GitLabアクセストークンの有効期限とスコープ(api, read_repository等)
  • 認証情報を削除して再入力(git credential-manager erase実行後、次回git操作で再認証)

作成日: 2024年11月

対象バージョン: Git 2.43.0, Git Credential Manager 2.6.1

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?