😸
Gitのリモートリポジトリとして個人用アクセストークンが必要なリモートリポジトリを複数設定する方法
概要
Gitのリモートリポジトリとして個人用アクセストークンが必要なリモートリポジトリを複数設定する方法について説明します。
例えば1つがAzure DevOps Services、もう1つがAzure DevOps Serverという場合に必要な手順となります。
手順
-
リモートリポジトリを追加します
git remote add origin <RepoURL1> git remote add foo <RepoURL2>
-
gitリポジトリに接続先のURLを含めた
http.extraHeader
を指定しますgit config http.<RepoURL1>.extraheader "Authorization: Basic ${Your_B64_PAT_On_RepoURL1}" git config http.<RepoURL2>.extraheader "Authorization: Basic ${Your_B64_PAT_On_RepoURL2}"
Your_B64_PAT_On_RepoURL1 |
<RepoURL1> に接続するためのBase64にデコードしたパーソナルアクセストークン。後述の手順で生成する |
Your_B64_PAT_On_RepoURL2 |
<RepoURL2> に接続するためのBase64にデコードしたパーソナルアクセストークン。後述の手順で生成する |
説明
Azure DevOps Services、Azure DevOps Server で個人用アクセストークン(PAT)を利用してクローンする方法として、PATからBase64にデコードしたトークンを生成しhttp.extraHeader
を指定する方法が公式ドキュメントに示されています。
MY_PAT=yourPAT # replace "yourPAT" with your actual PAT
B64_PAT=$(printf "%s"":$MY_PAT" | base64)
git -c http.extraHeader="Authorization: Basic ${B64_PAT}" clone https://dev.azure.com/yourOrgName/yourProjectName/_git/yourRepoName
認証情報としてリポジトリにhttp.extraHeader
を設定することで、push,fetch時にも認証することができます。
git config http.extraHeader "Authorization: Basic ${B64_PAT}"
しかし上記の方法では複数リモートリポジトリがある場合に対応できないため、URLごとのhttp.extraHeader
を設定する必要があります。
参考
Discussion