Table of Contents
GitとGitHubの違い
Git | ファイルやソースコードの変更を分散型でトラッキングする仕組み |
GitHub | Gitで作成したリポジトリをホスティングするためのWebサービス リポジトリ管理機能以外にDiscussion,Issue Tracking System,コードレビュー機能も提供 |
GitHubはGitレポジトリを管理する機能がコアなので,Gitの基本的知識がGitHub利用の必要条件となることは忘れないでください. Gitの理解及びセットアップはこちらの記事を参考にしてください.
GitHub特有の機能
GitHubにはGitにはない特有の機能があります.代表例として以下.
▶ Pull Request
- GitHub上のGitレポジトリに対して,他の開発者に新たに作成した変更のマージのリクエストするサービス
- ソースコードとの差分確認(コードレビュー機能)とディスカッションをPull Requestベースで実施できる
▶ Issue
- 1つのタスクやバグを1つのIssueに割り当てて,トラッキングや管理を行えうようにするための機能
- バグ管理システムやチケット管理サービスとして使用することができる
- commit messageに
#7
のようにIssue IDを書き加えることでリンクを張ることができる
▶ Organization
- チームを作成して各チームメンバーの権限の一括管理を可能とする機能
- チーム内部で共通ダッシュボードの作成も可能
- 公開レポジトリの範囲であれば無料でOrganizationアカウントを作成することができる
REMARKS
Pull RequestとIssueどちらも他の開発者へのnotification機能があります.GitHub登場前は「メーリングリスト + 課題管理アプリ + コードレビューアプリ」を組み合わせて開発体制を整える必要が有りましたが, GitHub登場によりこれらをまとめることができるようになったのがGitHubが世界中で使われている理由の1つだと思います.
GitHub user情報の取得
GitHubに登録されたユーザー情報はhttps://api.github.com/users/<username>
をcurl
コマンドやブラウザで開くことで取得することができます.
Linus Torvalds氏について以下のように取得することができます
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
% curl https://api.github.com/users/torvalds
{
"login": "torvalds",
"id": 1024025,
"node_id": "MDQ6VXNlcjEwMjQwMjU=",
"avatar_url": "https://avatars.githubusercontent.com/u/1024025?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/torvalds",
"html_url": "https://github.com/torvalds",
"followers_url": "https://api.github.com/users/torvalds/followers",
"following_url": "https://api.github.com/users/torvalds/following{/other_user}",
"gists_url": "https://api.github.com/users/torvalds/gists{/gist_id}",
"starred_url": "https://api.github.com/users/torvalds/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/torvalds/subscriptions",
"organizations_url": "https://api.github.com/users/torvalds/orgs",
"repos_url": "https://api.github.com/users/torvalds/repos",
"events_url": "https://api.github.com/users/torvalds/events{/privacy}",
"received_events_url": "https://api.github.com/users/torvalds/received_events",
"type": "User",
"site_admin": false,
"name": "Linus Torvalds",
"company": "Linux Foundation",
"blog": "",
"location": "Portland, OR",
"email": null,
"hireable": null,
"bio": null,
"twitter_username": null,
"public_repos": 7,
"public_gists": 0,
"followers": 210905,
"following": 0,
"created_at": "2011-09-03T15:26:22Z",
"updated_at": "2023-11-12T20:08:30Z"
}
Athentication to GitHub Repository
SSH プロトコルを利用してGitHubへの接続環境を構築します.SSH をセットアップする際には,SSH キーを生成し,ssh-agent に追加し,それから キーを自分の GitHubアカウントに追加します. SSH キーを ssh-agent に追加することで,パスフレーズの利用を通じて SSH キーに追加のセキュリティのレイヤーを持たせることができます.
REMARKS
- 個人的にはSSH接続ではなく,アクセストークンを用いた接続設定を推奨です
- アクセストークンを用いた接続設定はRyo’s Tech Blog > 2021-04-25: Githubパスワード認証廃止への対応にまとめてあります
新しい SSH キーを生成して ssh-agent に追加する
ssh-keygen
というコマンドを用いてsshキーを作成します.which ssh-keygen
を実行して,コマンドが存在するか確かめます.
1
2
% which ssh-keygen
usr/bin/ssh-keygen
次にsshキーを作成します.メールアドレスは自分のgit configで用いたメールアドレスを用いてください.
1
2
% ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private ed25519 key pair.
Enter a file in which to save the key」というメッセージが表示されたら,Enter キーを押します. これにより,デフォルトのファイル場所が受け入れられます.
1
> Enter a file in which to save the key (/home/you/.ssh/id_ed25519): [Press enter]
プロンプトで,安全なパスフレーズを入力します.
1
2
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
仮に~/.ssh/id_ed25519
というキーが発行された場合,Permissionを変更しておく
1
% chmod 600 ~/.ssh/id_ed25519.pub
~/.ssh/config
ファイルも編集する.
1
2
3
4
5
6
7
Host github
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/id_ed25519`
IdentitiesOnly yes
TCPKeepAlive yes
ここの設定は以下のコマンドに対応します.
1
% git clone [User]@[Host]:[リポジトリアドレス]
設定項目 | 説明 |
---|---|
Host | ホスト名, ssh hogehogeでhogehogeとなるところ |
User | ログインユーザー, githubの場合はgit |
Port | port, default 22 |
HostName | hostのアドレス, github.com |
IdentityFile | 秘密鍵のPATHを指定する |
TCPKeepAlive | 持続的接続の設定 |
IdentitiesOnly | 使用する秘密鍵をIdentityFileだけにします.デフォルトではnoであり,noだと全ての秘密鍵を試そうとします. |
GitHub アカウントへの新しい SSH キーの追加
SSH 公開鍵をGitHubに登録するところまでを目指します.そのためまず自分が作成したsshキーの公開鍵の内容を取得する必要があります.具体的にはクリップボードへのコピーです.
1
2
% sudo apt install xclip
% xclip -selection clipboard < ~/.ssh/id_ed25519.pub
- その後,GitHubにwebブラウザでアクセスし,
Settings
を変更します(Settingsをクリック). - ユーザ設定サイドバーでSSH and GPG keys(SSH及びGPGキー)をクリックします.
[New SSH key]
または[Add SSH key]
をクリックします.[Title]
フィールドで,新しいキーを説明するラベルを追加します. たとえば個人の Ubuntu Desktop を使っている場合,このキーを “Personal Ubuntu Desktop” などと呼ぶことが考えられます.- 次に,クリップボードにコピーしたキーを
[Key]
フィールドに貼り付けます.
その後,[Add SSH key]
をクリックして完了です.
SSH 接続をテストする
1
% ssh -T git@github.com
コマンド実行後以下のようなメッセージが出たら接続テスト成功です.
1
2
> Hi username! You've successfully authenticated, but GitHub does not
> provide shell access
ssh接続を使ったgit clone
ssh接続のユースケースの一つとして,private repositoryのgit cloneです.
1
2
3
4
5
6
7
% git clone git@github.com:RyoNakagami/sample_size.git
Cloning into 'sample_size'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 8 (delta 0), reused 8 (delta 0), pack-reused 0
Receiving objects: 100% (8/8), done.
ただし,GitHubとしてはSSH接続ではなくHTTPS接続による方法が推奨されています.プロジェクトなどで特段の制限や方針がなければHTTPSを使うことを検討してください.
References
(注意:GitHub Accountが必要となります)