GitHubの設定

GitとGitHubの設定 3/N

公開日: 2021-01-20
更新日: 2024-07-06

  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 キーを生成して 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
  1. その後,GitHubにwebブラウザでアクセスし,Settingsを変更します(Settingsをクリック).
  2. ユーザ設定サイドバーでSSH and GPG keys(SSH及びGPGキー)をクリックします.
  3. [New SSH key] または [Add SSH key] をクリックします. [Title] フィールドで,新しいキーを説明するラベルを追加します. たとえば個人の Ubuntu Desktop を使っている場合,このキーを “Personal Ubuntu Desktop” などと呼ぶことが考えられます.
  4. 次に,クリップボードにコピーしたキーを [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



Share Buttons
Share on:

Feature Tags
Leave a Comment
(注意:GitHub Accountが必要となります)