Windows10でGitHubを始める～⑥-1.Git操作時のGitHub認証HTTPS（Git Credential Manager）

個人学習メモ。

# 1.Git Credential Manager（GCM）とは

 - Gitの資格情報を安全に保存し、HTTPS経由でGitHubに接続するツールのこと。
 - Windows、macOS、Linuxで使える。
 - Personal Access Token（PAT）を手動で生成・保存する必要がなく、2要素認証にも対応できる。
 - GitHubの他、Bitbucket、Azure DevOpsにも対応している。
 - ちょっと前まで「Git Credential **Manager Core** 」と呼ばれていたらしい。

GCMはGit for Windowsではデフォルトで内包されており、[Git for Windowsインストール時](https://qiita.com/emiki/items/c0aa0b4da4b63921b153#2-12%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%83%98%E3%83%AB%E3%83%91%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A)にGCMを使うように選択していればpush時にすぐGCMで認証できる。
Git for Windowsインストール時の画面↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/ad96ba4c-fbf1-b35a-38c1-c50363aab453.png)
MacやLinuxではhomebrewでインストールが必要。
Windows用のスタンドアロンインストーラもある。

# 2.Git for Windowsインストール済のWindows10端末でGCMの認証情報を確認する
[Windows10でGitHubを始める～①Gitインストール](https://qiita.com/emiki/items/c0aa0b4da4b63921b153)でGit for Windowsをインストールする際GCMを有効にしていれば、Windows10端末でGCMの認証情報を確認することができる。
## 2-1.gitコマンドで確認
Git for Windowsインストール後、認証管理の初期設定はGit Bashを開き以下コマンドで確認できる。

```
git config --show-origin credential.helper
```
出力例

```
$ git config --show-origin credential.helper
file:C:/Program Files/Git/etc/gitconfig manager-core
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/880b8b44-1cbe-ca97-aacf-ac525fdfdf67.png)
`C:/Program Files/Git/etc/gitconfig`にファイルがあるようなので、エクスプローラーから見てみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/913a0044-f9a5-509c-c68d-b94fcbe47329.png)
認証情報の設定が確認できる。保存せず閉じる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/a3d56346-0f3b-523c-ec59-30efa4ff0345.png)

## 2-2.Windows資格情報から確認
[コントロールパネル]-[ユーザアカウント]-[資格情報の管理]-[Windows資格情報]-[汎用資格情報]から、認証情報が保存されているのが確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/d6e49f02-7dcf-672b-78f1-7307eb0799fe.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/fa741e2a-aaf2-7996-2a6c-ffe94eab0078.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/18ec18c2-e8b4-1795-5c82-565c52d79eb8.png)

# 3.GCMでHTTPS認証する
初めての`git push`実行時に出現するポップアップ「Connect to GitHub GitHub Sign in」で[Browser/Device]-[Sign in with your browser]をclickするとブラウザが開き、Git Credential Managerの承認を求められる。
操作イメージは[Windows10でGitHubを始める～⑤Githubにプッシュする 手順2-3.git push](https://qiita.com/emiki/items/a2871ab626396e95d9ec#2-3git-push)を参照。

# 4.GitHub側のGCM認証確認
GitHubにログインし、[Settings]-[Applications]-[Authorized OAuth Apps] を見ると、「Git Credential Manager」が確認できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/3d276aac-3f7c-d08a-3b51-550a9af3863e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1723719/9cd81552-e1c8-2e1f-a9bf-d77a1469cc51.png)

GCMで認証することにより、以後Gitを使うとき再び認証を求められることはない。

# 余談
[HTTP対応のGitリポジトリで機能する単一要素認証サポートを提供するGitの組み込みの資格情報ヘルパー](https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98)と[GCM](https://github.com/GitCredentialManager/git-credential-manager)は別物っぽい。

https://github.com/GitCredentialManager/git-credential-manager

>Compared to Git's built-in credential helpers (Windows: wincred, macOS: osxkeychain, Linux: gnome-keyring/libsecret) which provides single-factor authentication support working on any HTTP-enabled Git repository, GCM provides multi-factor authentication support for Azure DevOps, Azure DevOps Server (formerly Team Foundation Server), GitHub, and Bitbucket.

# 参照
[Windows10でGitHubを始める～⓪Gitの概念とインストールソフトの種類](https://qiita.com/emiki/items/5c8e52cf6b8506015462)
[Windows10でGitHubを始める～①Gitインストール](https://qiita.com/emiki/items/c0aa0b4da4b63921b153)
[Windows10でGitHubを始める～①'おまけGitホームディレクトリ変更](https://qiita.com/emiki/items/d3f7c054b70171218f64)
[Windows10でGitHubを始める～②GitHubアカウント作成](https://qiita.com/emiki/items/dadf77e9ae1e2b192323)
[Windows10でGitHubを始める～③GitHubでのメールアドレス設定とGitクライアントでのユーザ名・メールアドレス設定](https://qiita.com/emiki/items/4103150a5d7a7cfbff24)
[Windows10でGitHubを始める～③'おまけユーザ名・メールアドレス設定について詳細](https://qiita.com/emiki/items/24212696b54fd16e8af8)
[Windows10でGitHubを始める～④リモートリポジトリの作成（GitHub）](https://qiita.com/emiki/items/5080d948af4a2d0febf5)
[Windows10でGitHubを始める～⑤Githubにプッシュする](https://qiita.com/emiki/items/a2871ab626396e95d9ec)
[Windows10でGitHubを始める～⑥-0.Git～GitHub間の認証について](https://qiita.com/emiki/items/eeaf77d51aadef98aea9)
[Windows10でGitHubを始める～⑥-1.Git操作時のGitHub認証HTTPS（Git Credential Manager）](https://qiita.com/emiki/items/3f2ebda7280374fb3bb7)
[Windows10でGitHubを始める～⑥-2.Git操作時のGitHub認証HTTPS（Personal access token）](https://qiita.com/emiki/items/498b05ede19eee3ad916)
[Windows10でGitHubを始める～⑥-3.Git操作時のGitHub認証SSH編](https://qiita.com/emiki/items/1f1fc0bf0c2c4347148d)
[Windows10でGitHubを始める～⑦GitHubへのPullRequest](https://qiita.com/emiki/items/8619441dca761869177f)

https://github.com/GitCredentialManager/git-credential-manager

https://docs.github.com/en/get-started/getting-started-with-git/caching-your-github-credentials-in-git

https://qiita.com/skkzsh/items/11dd107a0734fec682b8

https://zenn.dev/2lu3/articles/940dc902d9fadf

https://dev.classmethod.jp/articles/credential-helper-resolves-codecommit-error/

https://cartman0.hatenablog.com/entry/2018/10/01/Git(for_Windows)%E3%81%ABGitHub%E8%AA%8D%E8%A8%BC%E3%81%AE%E8%A8%AD%E5%AE%9A%E3%82%92%E3%81%99%E3%82%8B(2/2)#credentialhelper%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6

https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98

https://qiita.com/usamik26/items/c655abcaeee02ea59695