Git管理していないプロジェクトを今からGithub(というかBitbucket)のリポジトリにpushさせる

ホスティングサービスのサーバにgitがないからソースからインストールしたので、いよいよ本来の目的である、Git管理していないプロジェクトをGithub(というかBitbucket)のリポジトリで管理させる作業に移った。

SSH鍵の作成

Github(Bitbucket)にはSSH経由で行うので、SSH鍵が必要である。
すでにSSH鍵がある場合は新たに作る必要はない。が、ない場合、あるいは既存の鍵とは別に管理したい場合は、新たに作成する必要がある。
そのためにはOpenSSHなどがインストールされている必要がある。昨今のUNIX系OSやmacOSならデフォルトでインストールされている(はずだ)。Windowsの場合は自分で何らかインストールする必要があるが、Windows10だとUbuntu bashがあるから使えるのだろうか…ちょっとわかりませんすみません。

で、ssh-keygenコマンドでSSH鍵を作る。RSAは特許問題があったから昔はDSAの鍵が主流だったので、どうしても自分はコマンド打つときに-t dsaって習慣になってていまでも抜けないからうっかりdsaって打っちゃうんだけど、パテントは2000年ぐらいで切れてるので-t rsaでいきましょう。
-bは鍵長、鍵のビット数。これも昔はDSAが1024ビットまで対応だったから1024だったのでうっかり1024ってやっちゃうけど、今なら2048ビットか4096ビットなのかな。2000年と2017年は違う(この記事は2017年8月のものである)。
鍵のファイル名は-fオプションで指定できる。省略するとデフォルトでid_rsaとなる。

パスフレーズを聞かれるので、このときに入力したものは覚えておく。パスワードとパスフレーズの違いは大したものではないが、パスワードというとどちらかというと短い文字数という印象のものに対して、パスフレーズはもっと長い1フレーズぶんの文章量があるイメージの印象だ。パスワードには空白文字などが含まれない場合が多いが、パスフレーズは文章をイメージさせるので空白文字も含まれて問題はない、などの違いがあったりする。厳密な区分けはないと思われるが(定義による)、「ワード」と「フレーズ」という言葉の違いで、日本人でも多少のニュアンスの違いは理解できるだろう。
まあ、セキュリティのことについて深入りするとハマるので、あまり追い込んで考えないほうがいいかもしれない(そういうのはイカんといえばイカんのだが)。

公開鍵をGithub(Bitbucket)に登録

~/.sshディレクトリ内にid_dsa.pubファイルができる。これは公開鍵なので、誰に見られても問題ない鍵。というか、公開するための鍵である。逆に.pubのついてないid_rsaファイルは秘密鍵なので、こちらは絶対に人の手に渡ってはならない。
で、このid_rsa.pubの中身(ASCII文字列)を、BitbucketやGithubに登録する。登録することで、SSH鍵を使ってSSH経由でそちらにアクセスができるようになる。

とりあえず、catコマンドでid_rsa.pubの中身を表示してコピーする。

これを、どこに登録するかという話。GithubとBitbucketだと、それぞれ違う。
まずは利用者の多いであろうGithubのセットアップ。
自分のアイコンをクリックして「settings」をクリック。

次に「SSH and GPG keys」をクリック。
GPGは知らんでいいです。

新しく作るので右上の「New SSH Key」をクリック。

「Title」には、どの鍵を登録したのか分かるような見出しをつけておく。「Key」には、さきほどcatした内容のコピーをペースとすれば良い。
ペーストしたら「Add SSH Key」ボタンで登録。

ここまではGithubのやり方。
英語だから、わかりづらいよね。めんどくさいよね。鬱陶しいよね。

BitbucketはGithubと違ってプライベートリポジトリも無料で(容量制限とかあるけど)使えるので、結構悪くない。
Bitbucketの設定方法は、次の通り。

アカウントのアイコンから「Bitbucket settings」をクリック。

「SSH鍵」をクリックして、SSH鍵を登録する。

「鍵を追加」ボタンをクリックして、自分の公開鍵の登録をする。id_rsa.pubのコピペ準備。

「key」欄にペースト。「title」には、どこの鍵かわかるように見出しをつけておくのがよいだろう。右下の「鍵を追加」ボタンをクリックして登録する。

SSH経由での接続テスト

さて、登録は完了したが本当にSSH経由でGithubやBitbucketに接続できるのか、というテストを行う。
ssh-addで鍵登録をしておくとか、そういうのは他のサイトに任せるとして、sshコマンドを使って、さきほど登録した公開鍵でリポジトリにアクセスできるのかどうかという確認をしてみる。

Githubの場合は、以下のとおり。

Bitbucketの場合は、こんな感じ。

いずれにしても、本当に鍵の正しい主なのかを聞いてくるので、ssh-keygenコマンドで入力したパスフレーズを入力する。

問題がなければ、Githubなら「Hello, だれだれさん」、Bitbucketなら「authenticated via a deploy key.」などのように返事が返ってくる。

既存プロジェクトのリポジトリ登録

まずはとにもかくにも、あらかじめGithubなりBitbucketで、当該プロジェクトのためのリポジトリを新規作成しておく。
そのあと、ローカル側では以下の通りにリポジトリ登録に向けたステップを踏んでいく。

まずは、git initでgitリポジトリに登録するための初期化作業を行う。

続いてgit addしてプロジェクト全体をローカルリポジトリに登録。
つまり、今いるディレクトリ全体をまるっと登録。その前に、不要な登録したくないディレクトリがあれば、.gitignoreを書いておく。
また注意したいのが、WordpressやCakePHPなど、展開したときにすでに.gitignoreや関連するGitファイル・ディレクトリがある場合もあるので、これらを削除する必要があるかどうかも事前に検討しておくほうがいい。

そして、最初のコミットをする。

リモートにaddする準備。ssh経由なので、こういう感じになる。
アカウント名はGithubやBitbucketに登録した際のアカウント名、登録ユーザ名も同じものになるだろう。リポジトリ名は、まさにpush先のリポジトリ名である。

あとは、git pushをすればBitbucketなりGithubにpushがおわる。ウェブから確認すれば、pushができたことも確認できるだろう。

Bitbucketの場合、リポジトリごとにAccess keysを設定できるようだが、契約が無料の場合は単にread onlyのアカウントになるらしく、pushなどはできないようだ。
Bitbucketでpushができるのは、このアカウントに直接紐づく公開鍵の持ち主だけのようで、この秘密鍵を持つアカウントのみのpushが許されるようだ。

gitなるシステムは、いろいろと、奥が深い。
ある意味subversionの時代よりメンドくさい。便利だったりするのではあるが。

コメントを残す

メールアドレスが公開されることはありません。