1. はじめに
githubを久しぶりに利用しようと思ったのですが、HTTPSでのpushでつまづいたため、その対応を記録するついでに、設定方法をメモしておきます。
(2024/12)
発行していたトークンが失効するため、Fine-grainedでの再発行・登録の手順を追加
[GitHub] Your personal access token (classic) is about to expire
Hi @*******,
We noticed your personal access token (classic) "*******" with read:org, repo, and workflow scopes will expire in about 18 hours.
If this token is still needed, visit https://github.com/settings/tokens/************/regenerate to generate an equivalent.
If you run into problems, please contact support by visiting https://github.com/contact
Thanks,
The GitHub Team
2. 概要
- githubのリポジトリへコードをpushする
- githubへの接続は「HTTPS」を利用し、「ssh」は使用しない
- HTTPS接続では、「トークン」を発行して接続する
- 「トークン」は端末に保存して使用する
3. 確認した環境
- Windows10
- Powershell
- git version 2.43.0.windows.1
4. GitHubのリポジトリ作成
リポジトリ作成
5. 表示されたコマンドの実行
リポジトリ作成時に案内されるコマンドは以下になります。
echo "# (リポジトリ名)" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/(githubのID)/(リポジトリ名).git
git push -u origin main
表示されたコマンドをそのままの順で実行すると以下のエラーがでました。
(HTTPSで接続したはずなのに、なぜssh?)
> git push -u origin main
ssh: Could not resolve hostname github: Name or service not known
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
git remoteの状況を確認します。pushの方がHTTPSの記載にはなっていませんでした。
> git remote -v
origin https://github.com/(githubのID)/(リポジトリ名).git (fetch)
origin github:(githubのID)/(リポジトリ名).git (push)
.gitconfigにて以下の記述を入れていたことが原因のようでした。なぜいれたのかは記憶がなく、接続方式を変換するための記述のようでしたので、この記述を消しました。
[url "github:"]
pushInsteadOf = https://github.com/
pushInsteadOf = git@github.com:
一度、remoteの設定を消して、再度設定します。両方、HTTPSのURLになりました。
> git remote rm origin
> git remote add origin https://github.com/(githubのID)/(リポジトリ名).git.git
> git remote -v
origin https://github.com/(githubのID)/(リポジトリ名).git (fetch)
origin https://github.com/(githubのID)/(リポジトリ名).git (push)
再度pushしようとすると以下のようにサインインが表示されました。
(ここでは一度中断しておきます。)
6. GitHubのアクセストークン発行・保管・削除方法
HTTPS接続にはアクセストークンの発行が必要なので、GitHubの画面から発行します。
トークンの発行
こちらの方法は「classic」となっているので、いずれ使えなくなる可能性があります。問題なければ後述の「Fine-grained」で作成した方がよいと思います。
「Settings」⇒「Developper Settings」から「Personal access tokens」を選択し、「Generate new token」から発行します。
NoteとExpiration(有効期限)を入れます。スコープ(Select Scopes)は最低限必要な「repo」と「workflow」、「admin:org」にある「read:org」にチェックを入れて作成します。(他にも必要であれば追加してください。)
トークンが発行されるので、コピーしておきます。(ここでしか表示されないので要注意)
左メニューのTokens(classic)を再度押すと、以下のように発行したものが表示されます。
トークンの発行(Fine-grained)
以下を見ると、Fine-grainedという新しい方法がpreviewになっており、こちらに移行していくものと思われます。
トークンの名前、設定したい対象のオーナー、有効期限を設定します。
Repository permissionsとAccount permissionsがありますが、最低限としてContentsをRead and Writeにしておきます。
「Generate Token」を押すと以下のようにトークンが発行されます。
この画面でしか表示されないので、コピーしておきます。
認証情報の保管場所と削除方法
認証情報を端末に保管する方法はいくつかあるようですが、Git Credential Managerで保存することにしました。
https://docs.github.com/ja/get-started/getting-started-with-git/caching-your-github-credentials-in-git
gitをいれた時に入っていたようです。
> git credential-manager --version
2.4.1
> git config --show-origin credential.helper
file:C:/Program Files/Git/etc/gitconfig manager
利用方法
初回にGitHubの操作を行った際、サインインが出るので、Tokenを選択して発行したトークン文字列をいれます。
以降、こちらの認証情報が使用されるようです。
認証情報が保存されている場所
認証情報はWindowsの資格情報マネージャー(Windows Credential Manager)に保管されているようです。
Windows資格情報の方にあります。
汎用資格情報の中にgithubの認証がありました。こちらの登録を削除すると再認証が必要になります。
認証情報の変更方法(トークンの更新)
Windows資格情報マネージャーで該当に項目を表示し、「編集」を押します。
コピーしておいたトークンをパスワードに貼り付けて登録します。