本記事での GitHub 連携は HTTPS で Personal access tokens を使用する。
環境
- Windows 10 Enterprise 22H2
- SourceTree 3.4.17
GitHub で Personal access tokens を生成
Personal Access Tokens (Classic) にアクセスする。
右上のドロップダウン Generate new token
から Generate new token (classic)
を選択する。
設定は好みだが、今回は以下のように設定した。
Note には利用用途がわかるように SourceTree と入力。
Expiration(有効期限)は 90 days
を選択。
Select scopes(トークンが利用可能な権限)は repo
と user
を選択。
Generate token
をクリックしてトークンを生成する。
生成されたトークン XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
の部分をメモする。
SourceTree に GitHub のアカウントを追加
SourceTree のメニューより ツール > オプション > 認証 を選択し、追加をクリックする。
項目 | 選択値 |
---|---|
ホスティングサービス | GitHub |
優先するプロトコル | HTTPS |
認証 | Personal Access Token |
上記のように選択後 Personal Access Token を再読み込み をクリックする。
ユーザー名 には GitHub のアカウント名を
パスワード には先ほど発行した Personal Access Token をそれぞれ入力して OK をクリックする。
認証に成功 と表示され、アカウントが追加されていればオーケー。
SourceTree で GitHub のリモートリポジトリをクローン
クローンを行う際に CredentialHelperSelector ダイアログが表示された場合は manager-core
及び Always use this from now on
を選択する。
同ダイアログが 2回表示される場合、同じ選択を繰り返す。
https://nishikianago.hatenadiary.jp/entry/2023/02/20/001022
https://teratail.com/questions/mw4yzn2mzuowz4
コミットユーザーの設定
GitHub 以外のホスティングサービスを併用している場合など、リポジトリ毎にコミットユーザーを使い分けたい場合がある。
SourceTree 右上の設定より、リポジトリ設定を表示する。
グローバルユーザー設定を使う のチェックを外す。
フルネーム には GitHub のアカウント名を
メールアドレス には GitHub のアカウントに紐づけた自身のメールアドレス または GitHub が提供している noreply メールアドレスを入力する。
今回はセキュリティの観点から noreply メールアドレスを使用する。
自身の noreply メールアドレスは Email settings にて確認できる。
表示されていない場合は Keep my email addresses private
のチェックが必要。
続いて SourceTree のターミナルを起動して、以下のコマンドを実行する。
git config --local user.name "[GitHub Account Name]"
git config --local user.email "[ID]+[GitHub Account Name]@users.noreply.github.com"
https://docs.github.com/ja/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-email-preferences/setting-your-commit-email-address
https://ai-can-fly.hateblo.jp/entry/github-email-private
GitHub へのコミットに Verified マーク(署名)を付与する設定
https://zenn.dev/noraworld/articles/sign-commits-with-gpg-key
https://smile-jsp.hateblo.jp/entry/2020/08/12/125020
GPG キーの生成
gpg --full-generate-key
鍵の種類を選択
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection?
Enter でデフォルトの RSA and RSA を指定する。
鍵の bit 数を指定
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
4096
と入力して Enter で確定する。
鍵の有効期限を指定(無期限)
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
0
と入力して Enter で確定する。
設定の確認
Is this correct? (y/N)
y
と入力して Enter で確定する。
名前とメールアドレスの設定
Real name: naente
Email address: 47913993+naente@users.noreply.github.com
Comment:
Real name を訊ねられるが本名である必要はない。
Email address には GitHub の noreply メールアドレスを指定する。
Comment は未入力で問題ない。
最終確認
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
O
と入力して Enter で確定する。
パスフレーズの設定
GPG キーに任意のパスフレーズを設定する。
再入力を求められるので、もう一度同じパスフレーズを入力する。
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key XXXXXXXXXXXXXXXX marked as ultimately trusted
gpg: revocation certificate stored as '/c/Users/naente/.gnupg/openpgp-revocs.d/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.rev'
public and secret key created and signed.
pub rsa4096 2024-05-22 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid naente <47913993+naente@users.noreply.github.com>
sub rsa4096 2024-05-22 [E]
GPG キーの生成が完了した。
GitHub アカウントへ GPG キーを設定
GPG キーの取得
gpg --list-secret-keys --keyid-format=long
以下のような情報が表示される。
/c/Users/naente/.gnupg/pubring.kbx
--------------------------------------
sec rsa4096/9240835302B1CB2F 2024-05-22 [SC]
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
uid [ultimate] naente <47913993+naente@users.noreply.github.com>
ssb rsa4096/XXXXXXXXXXXXXXXX 2024-05-22 [E]
GPG キー ID (上記の例でいう 9240835302B1CB2F の部分) をクリップボードにコピーする。
コピーした GPG キー ID を指定して、以下のコマンドを実行する。
gpg --armor --export 9240835302B1CB2F
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBGZNRgQBEADdnPSp7dDHv1H63JlAWt1i2apbo53dXC9IKgSQzLt5xY0al+Lo
PXa+nMtJVMJCDuXuosaQneN5tdkNACdGM1h95HnCnSTDcidYFzf+N93SlapG6VbR
RFde+4PabDhiUcyo53kt65geaUqqbULNFCyjH1WY5obuajYGNENmPkXVHAKfy7eF
jQOHASRhR3MWERK3ca3sbRPKjkD05XfEFT3ZcB1N+nryg8AaDtBsffzrrsF6WTBn
z+Y6eL8iF+MZiOBSv+6+Pta7zH/Mfspo1nRfvpkPJPF3W7ZzlMogQOMBbsA/MqCf
NeV3MtGWUmW7142RLz4mgMqYFYFsu3p8Hv3exmWCTSjgtg4Vbk9cPSSPItIqKy1l
SiNOzGHvUpcYJSlAdF2rwaFe0gOPQhi8UOHiUZC+wrX3qPnMS3E+HIWrx1SLxLBQ
kyJlyH1uF/QqIwcwdtm8SS/NwhLM6e8kHNJJRiyn0kv8uOmuqLY0dCFwivjViEWH
dtZzpEp3WCppNA9gD9hJjoOuVwkLe3vkk5tQkg7xuqz1S991Q/5Qex/U8dsqOPCi
...
-----END PGP PUBLIC KEY BLOCK-----
表示された GPG キーを -----BEGIN PGP PUBLIC KEY BLOCK-----
と -----END PGP PUBLIC KEY BLOCK-----
も含めてクリップボードにコピーする。
GitHub アカウントへ GPG キーを登録
Key フィールドへコピーした GPG キーを貼り付け Add GPG key
をクリックして登録を完了する。
Git に GPG 署名キーを設定
今回は対象のリポジトリへの署名にのみ GPG キーを使用したいので以下のコマンドを実行する。
git config --local user.signingkey 9240835302B1CB2F
既定でコミットが署名されるように以下のコマンドを実行する。
git config commit.gpgsign true
動作確認
SourceTree からプッシュできること、GitHub のページでコミットに署名が付与されていることを確認する。
GPG キーのパスフレーズを求められたら入力する。
コミット内容に Verified
の表示があれば成功。