🏹

Gitコマンド入門::Gitカスタマイズ機能(config,SSH keys3)第八十回

2021/04/13に公開

みなさんこんにちは! 前回は、自分で2つアカウントを用意して、複数人数での環境構築のシミレートを行いましたけど、いかがでしょうか? 今回は前回に続いて、git pull してきた相手側のリポジトリーを、自分のGitHubのリモートに、git push してみますね。

今回も、こちらのドキュメントの続きです。

https://git-scm.com/book/ja/v2/Git-のさまざまなツール-作業内容への署名#r_signing
7.4 Git のさまざまなツール - 作業内容への署名

前回の記事はこちらから!

https://zenn.dev/shiozumi/articles/07373f9bdfed84

git本家のドキュメントメニューはこちら!

https://git-scm.com/book/ja/v2

ざっくり手順はこんな感じですね。

- 1st アカウント側 2nd アカウント側 補足
1 - PGP証明書作成 gpg --gen-key
2 - git commit -S 署名付きコミット
3 - git push Githubにプッシュ
4 - PGP証明書Export gpg -o <FILE> -a --export <Mail>
5 git clone - git clone <URL>
6 PGP証明書import - gpg --import
7 PGP証明書承認 - gpg --edit-key 5番を選択
8 git push - 1st 側のGithubにプッシュ

8番目の処理を行います!

$ git remote -v
origin  https://github.com/shiozumi-makoto/20210412.git (fetch)
origin  https://github.com/shiozumi-makoto/20210412.git (push)

現状では、clone した直後なので、リモートリポジトリ、origin も、2ndアカウントのままですから、まずは、ここを1st側のリポジトリに変更します!

1st側のアカウントで、GitHubにログインし、2nd側と同じ名称の、20210412 リポジトリを作成して置きます。

git remote add origin <URL> コマンドで設定!

$ git remote add origin https://github.com/shiozumi-esmile/20210412.git
fatal: remote origin already exists.
// 当然、登録済なので、エラーとなりますね。(^▽^;)

$ git remote rename origin origin_2nd
// origin を、リネームしてから!

$ git remote add origin https://github.com/shiozumi-esmile/20210412.git
// 再度、実行!

$ git remote -v
origin  https://github.com/shiozumi-esmile/20210412.git (fetch)
origin  https://github.com/shiozumi-esmile/20210412.git (push)
origin_2nd      https://github.com/shiozumi-makoto/20210412.git (fetch)
origin_2nd      https://github.com/shiozumi-makoto/20210412.git (push)

// 設定は、このようになっています。
// origin は、origin_2nd になり、
// あたらしい、origin は、1stアカウントのリポジトリとなりました。

git push -u origin sub ローカルmainブランチから、チェックアウトして、subをプッシュします!

$ git checkout -b sub
Switched to a new branch 'sub'
// ローカルsubブランチ作成

$ git branch -avv
  main                    1b81f9b [origin_2nd/main] 3rd
* sub                     1b81f9b 3rd
  remotes/origin_2nd/HEAD -> origin_2nd/main
  remotes/origin_2nd/main 1b81f9b 3rd
 
$ git push -u origin sub
// ローカルsubブランチを、push

Username for 'https://github.com': shiozumi-esmile
Password for 'https://shiozumi-esmile@github.com':
Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 12 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (9/9), 1.86 KiB | 1.86 MiB/s, done.
Total 9 (delta 0), reused 0 (delta 0)
To https://github.com/shiozumi-esmile/20210412.git
 * [new branch]      sub -> sub
Branch 'sub' set up to track remote branch 'sub' from 'origin'.

$ git branch -avv
  main                    1b81f9b [origin_2nd/main] 3rd
* sub                     1b81f9b [origin/sub] 3rd
  remotes/origin/sub      1b81f9b 3rd
  remotes/origin_2nd/HEAD -> origin_2nd/main
  remotes/origin_2nd/main 1b81f9b 3rd

1st側のGitHubにログインして確認!

git log --show-signature --oneline

$ git log --show-signature --oneline
1b81f9b (HEAD -> sub, origin_2nd/main, origin_2nd/HEAD, origin/sub, main)
gpg: 2021年04月12日 07時53分37秒 JSTに施された署名
gpg:                RSA鍵24A0A56EC0BC3E95を使用
gpg: "Chi Shiozumi <shiozumi@e-smile.ne.jp>"からの正しい署名
3rd

33203ea gpg: 2021年04月12日 07時50分05秒 JSTに施された署名
gpg:                RSA鍵24A0A56EC0BC3E95を使用
gpg: "Chi Shiozumi <shiozumi@e-smile.ne.jp>"からの正しい署名
2nd

9564a2c gpg: 2021年04月12日 07時21分12秒 JSTに施された署名
gpg:                RSA鍵24A0A56EC0BC3E95を使用
gpg: "Chi Shiozumi <shiozumi@e-smile.ne.jp>"からの正しい署名
1st

GitHub側と、ローカル側での、1b81f9b, 33203ea, 9564a2c, 3つのハッシュ値を確認できましたね。また、意外だったのが、Verified になっていましたね。おそらくこれは、GitHub側で、2つともアカウントを管理しているからなのでしょう。

Verified ステータスも確認してみます。

私の予測とは、異なっていましたね。

当初想定していたのは、2nd側のPGP公開鍵を、1st側のGitHubに登録しないと、Unverified になると思っていたところ、どうやら、GitHub側で、2ndアカウントから紐づけて、GPGファイルを読み込んでくれそうです。

実際に、2ndアカウント側で、PGP公開鍵を削除してみました。すると予想通り、Unverified になりましたね。

まとめ

さあ、いかがでしたか? 最後PGPキーのアカウントからの紐づけは予想外でしたけど、サイトの機能としては、まあ、当たり前ですよね~(^▽^;) ちなみに、GitHubのアカウントを持っていない場合は、PGPの公開鍵を、GitHub側に登録しないと、Unverified と表示されます。

それでは、今回はここまで、お疲れ様でした!

https://zenn.dev/shiozumi/articles/98073c09c9889b
https://twitter.com/esmile2013

Discussion