Git 第2回: ローカルリポジトリを GitHub や Bitbucket に上げよう
- GitHub
https://github.com - Bitbucket
https://bitbucket.org
目次
SSH の設定
SSH 鍵の生成
キーペアの生成には ssh-keygen コマンドを使います。-t
オプションで生成アルゴリズムを指定します。ホスティングサービスでサポートされているものを指定しましょう。下の例では Ed25519 を指定しています。
% ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/mijinco/.ssh/id_ed25519): /home/mijinco/.ssh/id_ed25519_gh
Created directory '/home/mijinco/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mijinco/.ssh/id_ed25519_gh
Your public key has been saved in /home/mijinco/.ssh/id_ed25519_gh.pub
The key fingerprint is:
SHA256:AXxNruLXhIpLehd0lR7VquJpXxLKFuj3ye7MRlm8zP4 mijinco@oshiruko
The key's randomart image is:
+--[ED25519 256]--+
| .. o.o.. |
| ....= . |
| ..o.o . |
| ...+. + |
| .o.S o* . |
| +.+.=+.+ |
| o +o*+o.. |
| o...++=.+. |
| .... . =X .E |
+----[SHA256]-----+
% ls ~/.ssh/
id_ed25519_gh id_ed25519_gh.pub
なお、途中でパスフレーズの入力を求められます。空欄のままでも鍵は生成できますが、セキュリティー的には設定しておくのが望ましいとされています。パスフレーズを設定すると、このキーペアでアクセスするたびにパスフレーズを入力しなければならず面倒ですが、私の場合はそれほど頻繁にアクセスするわけではないので、まいっかと思っています。
一応、シェルを閉じるまでの間だけであれば、パスフレーズを省略する方法があります。「ssh-agent」「ssh-add」などのキーワードでググってみてください。この方法もシェルを起動し直すと再入力が必要となるので、やはり面倒です。
デフォルトではキーペアは ~/.ssh/ に保存され、ファイル名は秘密鍵が id_ed25519、公開鍵が id_ed25519.pub となります。上の例では GitHub 用の鍵であることを明示するために末尾に「_gh」を付けたので、それぞれ id_ed25519_gh、id_ed25519_gh.pub となります。
秘密鍵のファイルは自分のみ読み書きできるようにパーミッションを変更しておいたほうがいいかもしれません。
% chmod 600 ~/.ssh/id_ed25519_gh
クライアント PC 側の設定
~/.ssh/config を作成し、次のように書いておきます。ファイルがすでにある場合は追記してください。
Host github github.com
HostName github.com
IdentityFile ~/.ssh/id_ed25519_gh
User git
また、~/.gitconfig に次の 2 行を追記してください。 HTTPS でのアクセスを SSH に置き換えるための設定 (らしい) です。
[url "git@github.com:"]
insteadOf = https://github.com/
GitHub に公開鍵を登録する
上で作成したキーペアのうち、公開鍵のほう (id_ed25519_gh.pub) を GitHub に登録します。
- GitHub にログインし、画面右上のプロフィール画像をクリックし (図 1 (a))、[Settings] を選択する (同 (b))。
- Settings 画面のメニューから [SSH and GPG keys] を選択し、[New SSH key] ボタンをクリックする (同 (c))。
- Add new SSH Key 画面 (同 (d)) で各欄に次のように入力する。
- Title: 自分で識別しやすいように好きな名前を付ける。例えば <クライアントマシン名>/<OS 名> など。
- Key type: ここでは SSH で接続したいので、Authentication Key (認証キー) を選択する。
- Key: 公開鍵ファイル (上の例では ~/.ssh/id_ed25519_gh.pub) の中身をコピペする。
接続をテストする
ここまで終えれば GitHub に接続できるはずです。テストしてみましょう。端末エミュレータを開いてssh -T git@github.com
と実行します。途中で「Are you sure you want to continue connecting?」と訊かれたら yes と回答します。キーペアの生成時にパスフレーズを設定した場合は、それも入力します。最終的に「You've successfully authenticated, but GitHub does not provide shell access.」と返ってくれば成功です。
% ssh -T git@github.com
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Enter passphrase for key '/home/mijinco/.ssh/id_ed25519_gh':
Hi mijinco0! You've successfully authenticated, but GitHub does not provide shell access.
GitHub に空のリポジトリを新規作成する
- リポジトリ名は hp-example とする (ローカルリポジトリと同名)。
- 公開リポジトリ (誰でも閲覧可能) にする。
- リポジトリに付随するファイル (README、LICENSE、.gitignore) は GitHub 上では作らない (自分で作る)。
- GitHub メイン画面右上のほうにある [+] (Create new...) をクリックして [New repository] を選択する。図 2 のような画面になる。
- 各欄に入力する。
- Repository name: リポジトリの名前。ローカルリポジトリと同じ名前にしておくのが無難。
- Description: リポジトリの説明。任意入力。
- Public: 公開リポジトリにするのでチェックを入れる。
※ 非公開リポジトリにするなら [Private] を選ぶこと。 - Initialize this repository with: すべてのチェックをオフにする。
- [Create repository] ボタンを押す。
クライアント PC 側にリモートリポジトリを追加する
今しがた GitHub に作成したリモートリポジトリは、クライアント PC からは git@github.com:mijinco0/hp-example.git という形でアクセスします。ただこれを毎回打っていては指が疲れてしまうので、リモートリポジトリに別名を付けることができます。
クライアント PC 側に戻り、ローカルリポジトリに移動して次のコマンドを実行してください。これでリモートリポジトリに origin という名前でアクセスできるようになります。
% git remote add origin git@github.com:mijinco0/hp-example.git
ちなみに別名は origin でなくても好きな名前でいいのですが、リモートリポジトリを clone したときに付くデフォルトの別名が origin になるので、慣例として origin がよく使われるようです。
git remote
に-v
オプションを付けると、現在のフルネームと別名を確認することができます。
% git remote -v
origin git@github.com:mijinco0/hp-example.git (fetch)
origin git@github.com:mijinco0/hp-example.git (push)
ローカルリポジトリをリモートリポジトリに反映させる
リモートリポジトリは今のところ空の状態です。そこにいよいよ中身を投入します。ローカルリポジトリに移動して、もし master ブランチにいなければ master ブランチに切り替えて、origin へ push しましょう。
% cd ~/gitroot/hp-example/
% git switch master
% git push -u origin master
-u
オプションは、ローカルリポジトリの現在のブランチの upstream (上流) が origin の master ブランチであることを設定するために付けています。
ちなみに、前回の最後に「v0.1」というタグを打っておきましたが、上記のコマンドではタグはリモートに反映されません。タグはタグで push する必要があります。特定のタグを push するならタグ名を、すべてのタグを push するなら--tags
オプションを付けて push します。
% git push origin v0.1
または
% git push origin --tags
反映されたか確認する
おまけ: Bitbucket の場合
ワークスペースとプロジェクト
- Bitbucket には「ワークスペース」と「プロジェクト」という概念があります (もしかしたら GitHub にもあるのかもしれないけど、特に意識しなくても利用できてますよね)。
- 最も大きな枠がワークスペースで、その中に複数のプロジェクトを入れることができます。プロジェクトの中には複数のリポジトリを入れることができます。
- ワークスペースには ID があり、他人が所有するワークスペースも含めて、重複する ID を付けることはできません。
- リポジトリの URL は「www.bitbucket.org/<ワークスペース ID>/<リポジトリ名>」となります。
- Bitbucket にアカウントを作成すると、デフォルトでワークスペースが 1 個作成され、ワークスペース ID は自分のユーザー名となります。
- ワークスペースを複数持つことも可能ですが、その場合も既存の ID を付けることはできません。
アカウント作成
Bitbucket のアカウントがなければアカウントを作成します。上にも書いたように、ここで決めたユーザー名がワークスペース ID やリポジトリの URL に影響しますので、念頭に置きましょう (まあその点は GitHub も同じですが)。
SSH の設定
- キーペアのファイル名は、必要に応じて「id_ed25519_bb」のように末尾を変えて、GitHub 用と使い分けるようにしましょう。
- ~/.ssh/config (すでに存在していたら追記してください)
Host bitbucket bitbucket.org HostName bitbucket.org IdentityFile ~/.ssh/id_ed25519_bb User git
- ~/.gitconfig (すでに存在していたら追記してください)
[url "git@bitbucket.org:"] insteadOf = https://bitbucket.org/
公開鍵の登録
- Bitbucket にログインし、画面右上の歯車アイコンをクリックし (図 5 (a))、[Personal Bitbucket settings] を選択する (同 (b))。
- Personal settings 画面のメニューから [SSH 鍵] を選択し、[鍵を追加] ボタンをクリックする (同 (c))。
- SSH 鍵追加画面 (同 (d)) で各欄に次のように入力する。
- Label: 自分で識別しやすいように好きな名前を付ける。例えば <クライアントマシン名>/<OS 名> など。
- Key: 公開鍵ファイル (ここでは ~/.ssh/id_ed25519_bb.pub) の中身をコピペする。
Bitbucket に空のリポジトリを新規作成する
ワークスペースはアカウント作成時に自動作成されたワークスペースを使います。プロジェクト名とリポジトリ名はともに「hp-example」とします。Bitbucket におけるプロジェクトはまだ作成していませんが、ここで入力した名前で勝手に作ってくれるので、先に作っておく必要はありません。
- 画面上部のメニューにある [Create] をクリックして [リポジトリ] を選択する。
- [新規リポジトリの作成] 画面 (図 5) が表示されるので、下記のように入力する。
- Workspace: 自分のユーザー名が自動入力される。
- プロジェクト名: hp-example
- リポジトリ名: hp-example
- アクセスレベル: 今回は公開リポジトリなので、非公開のチェックをはずす。
※ 非公開リポジトリにする場合はチェックを入れる。 - README を含めますか?: No
- Default branch name: 空欄
- Include .gitignore: No
- [リポジトリの作成] ボタンを押す。
今回はここまで
最初は古典的な「ディレクトリ丸ごとバックアップ」から始まり、Git によるローカルでのバージョン管理を経て、GitHub に上げるところまでやると、なんだか肩の荷が下りたような安心感があります。
次回から 3 回に分けて、Tig という Git クライアント (というよりもリポジトリビューアといったほうが正しい) を紹介します。
- Git 第1回: GitHub に上げるサンプルプロジェクトを作ろう
- Git 第2回: ローカルリポジトリを GitHub や Bitbucket に上げよう
- Git 第3回: Git にテキスト UI をもたらす Tig の恩恵にあずかろう
- Git 第4回: Tig をカスタマイズしよう
- Git 第5回: ついでながら Windows でも Tig を使おう
- Git 第6回: 自宅 LAN の NAS にリポジトリを作ろう
広告