Gitを触ってみるよ その4「GitHubデビューしてみた」

HadoopStreamingについて書いた記事の時に作ったフレームワークを公開するのにGitHubを使ってみたので、Gitを触ってみるよシリーズの一環として備忘録を…。*1

今回のリポジトリ構成のイメージ

普通であればローカル環境からGitHubにpushできるように、という設定をすると思うんですが、自分の場合は、Subversion的な集中型リポジトリをサーバに持って、そこで管理しているものの中で公開したくなったものだけGitHubにpushする…という風にしたかったので、若干変則的です。

イメージとしてはこんな感じ…。

以降のコマンドラインの内容は、上記イメージの構成の場合のものです。

GitHubのユーザアカウントを取得する

まずは、GitHubのユーザアカウントを取得します。この辺は大して詰まるところも無いので省略…。*2

ちなみに、ご予算に応じて様々なプランをご用意させて頂いておりますので、お財布とご相談の上、適当なプランをご判断下さい。(笑) 「どうしてもプライベートなリポジトリが欲しい!」という事で無ければ、Freeのプランでいいとは思いますが…。

GitHubへのpush用に公開鍵を登録する

GitHubへpushを行うユーザで公開鍵を作成して、それをGitHubに登録します。

# su - git
$ ssh-keygen -t rsa
$ cat .ssh/id_rsa.pub

GitHubにログインして、右上にある"account"を押して、"SSH Public Keys"の項目の所で、作成した公開鍵の内容をコピペして登録します。

GitHub上のリポジトリを作成する

公開鍵の登録ができたら、右上の"dashboard"でTOPページに戻って、"Create a Repository"を押してリポジトリの作成を開始します。

"Project Name"、"Description"、"Homepage URL"を適宜入力して、"Create Repository"を押せばリポジトリが作成されます。

集中型リポジトリを作成する

サーバ上に、集中管理用のリポジトリを作成します。

# su - git
$ cd public/
$ mkdir php-hadoop-streaming-frontend.git
$ cd php-hadoop-streaming-frontend.git/
$ git --bare init

ローカル環境のソースコードを集中型リポジトリにpushする

ローカル環境上で開発していたソースコードを集中型リポジトリへpushします。

# su - hadoop
% cd bin/mapreduce/php/lib/
% git remote add origin ssh://git@localhost/home/git/public/php-hadoop-streaming-frontend.git
% git push origin master

今回は、集中型リポジトリのあるサーバと同じサーバ上で直接ソースコードを書いていたので、push先がlocalhostになっています。

集中型リポジトリからGitHubへpushする

集中型リポジトリへpushされたソースコードを、GitHubへpushします。

# su - git
$ mkdir github
$ cd github/
$ git clone /home/git/public/php-hadoop-streaming-frontend.git
$ cd php-hadoop-streaming-frontend/
$ git remote add github git@github.com:stellaqua/php-hadoop-streaming-frontend.git
$ git push github master

GitHubへpushする時用に新しくディレクトリを作って、そこへ一旦cloneしてから、GitHubへpushします。

以降、開発を進めて、GitHubへ更新内容をpushする時は、以下のようにpull→pushを行います。

# su - git
$ cd github/php-hadoop-streaming-frontend/
$ git pull origin master
$ git push github master

あとがき

普通だとこんな面倒な事する必要無いのかもしれませんが(^^;、ソースコードのバックアップ的な意味も含めて集中型リポジトリは欲しかったので、こんな形になりました。

最近は、何か新しくコードを書き始める時は必ず"git init"から始めて、とにかく集中型リポジトリに突っ込んでおく…という癖が付いてきました。

とは言え、まだまだGitで使いこなせていない機能もたくさん…。その辺りは徐々に使っていって、このシリーズで備忘録として書いていくようにしたいと思います。

*1:GitHubはアカウントだけは取ってあったものの、使った事が無かったので…。(^^;ゞ

*2:GitHubのHelpは非常に親切なので、言われた通りに進めていけば、だいたいの場合困る事はないです。