GitHub のフォーク (fork) とプルリクエスト (pull request) の使い方

先日、皆さまにお願いした CreateJS のドキュメント翻訳では GitHub を利用しています。GitHub を使うのは初めてという方もいるかもしれませんので、いまさらながら簡単な使い方をご紹介します。

一般的な (といっても GitHub の使い方が指定されているわけではないですが) GitHub を利用した共同開発には以下の 2 種類があるようです。

共有リポジトリ

リポジトリ (しばしば "repo" と呼ばれます) は、GitHub が、プロジェクトに関連するファイルをまとめて保管する単位です。CreateJS 翻訳プロジェクトも CreateJS/localization という名前のリポジトリを持っています。

これをチーム内で共有して、作業目的ごとにブランチ (Branch) と呼ばれるコピーを作り、適当なタイミングでブランチに対して行われた更新をオリジナル (Master Branch) に反映するというのが、GitHub を使った共同開発の 1 つのパターンとされています。

この方式では、参加者が同じリポジトリ内で更新を行うため、事前に調整が必要になることもあり、比較的管理が容易な小規模でプライベートなプロジェクトに向いていると言われています。ということで、CreateJS 翻訳プロジェクトはこちらの方法を採用していません。

リポジトリのフォーク

GitHub のアカウントを持っていると、自分のアカウント内に既存のリポジトリの複製をつくれたりします。この操作はフォークと呼ばれます。

共有されていないリポジトリに対して書き込むことはできません。一方、フォークしたリポジトリは自分の所有物なので、自由に更新ができます。

つまり、自分のフォークを作れば、共有されていないリポジトリをベースとした作業も (勝手に) 始められることになります。

GitHub には、自分のフォーク内の更新を反映するよう、オリジナルの管理者に依頼する手段があります。この依頼を受け取った管理者が、依頼どおりにオリジナルを更新すれば、リポジトリを共有しない共同開発の実現です。

こちらの方式の場合、調整が必要なのは、オリジナルを更新 (マージ) する際の修正内容だけです。事前に開発者間のコーディネートが不要なため、オープンソースプロジェクト向きと言われています。CreateJS のドキュメント翻訳はこちらの方式をとっています。

プルリクエストを送るまでの手順概要

「フォーク」 を使ったプロジェクトの作業は、大体以下のような流れになるもことでしょう。

  1. GitHub アカウント作成 & ログイン
  2. オリジナルのリポジトリを自分のアカウントにフォーク (fork)
  3. オリジナルまたはフォークしたリポジトリをローカル環境にクローン (clone)
  4. クローンしたリポジトリ内で開発作業を行う
  5. クローンで行った更新を、フォークしたリポジトリにコミット
  6. フォークしたリポジトリからオリジナルのリポジトリにプルリクエスト (Pull Request) を送信

上記ステップ 1~3 は、初回だけ必要な作業です。2 回目以降の更新作業では、特に問題が無ければ、ステップ 4~6 の繰り返しになります。

ここで新しく出てきた言葉に、ステップ 3 のクローン (clone) と、ステップ 6 のプルリクエスト (pull request) があります。

クローン

フォークは GitHub サーバー上でリポジトリの複製を作成する行為でした。クローンは、サーバー上のリポジトリを、クライアント環境に複製する行為です。

GitHub はファイルを管理する場所であって、開発する場所ではありません。そこで、開発作業を行う際は、ローカル PC のフォルダ内にリポジトリをコピーしてきてから (クローンの作成) 、それを使って開発やテストを行います。

プルリクエスト

前述のように、直接オリジナルのリポジトリに書き込めない場合は、クライアント側で行った更新作業を、フォークしたリポジトリを経由して、オリジナルリポジトリの管理者通知するという手順をとります。

その際、オリジナルの管理者に更新を依頼する手段として使われるのが、プルリクエストという機能です。

GitHub では (というより一般的に)、更新をリポジトリに書き込む作業をプッシュ、他のリポジトリから更新を取り込むことをプルと呼びます。ここでは、相手にプルによる自分のフォークとの同期をお願いすることから、プルリクエストと呼ばれていると考えられます。

プルリクエストの発行後の作業は、オリジナルリポジトリの管理者任せになります。

もうちょっと詳細な説明

以下、上で紹介した 6 つのステップに関連する作業について、いくつか補足です。

  • GitHub アカウント作成

アカウントの作成は GitHub のページでユーザ名、メアド、パスワードを入れるだけです。オープンなリポジトリを使うだけなら無料でアカウントが作成できます。

  • リポジトリをフォーク

フォークしたいリポジトリのページを開きます。CreateJS 翻訳プロジェクトであれば、CreateJS/localization になります。

すると、ページの右上あたりに "Fork" ボタンが見つかります。ロクインした状態であれば、これをクリックすれば、自分のリポジトリが作成されます。

  • ローカル環境にクローン作成

リポジトリを手元にクローンするには、リポジトリのページ左側に表示されている "Clone in xxx" というボタンをクリックします。

初回であれば、GitHub アプリのインストール画面が表示されるかと思います。基本的な GitHub の操作で十分な場合は (CreateJS の翻訳とか)、ここでアプリをインストールしておくと楽です。

アプリをインストールした場合は、GitHub にログイン後、再度クローンのボタンを押せば、ほぼ自動でクローンが作成されます。

  • クローンからフォークへのコミット

アプリを使っている人は、変更一覧の箇所を見て、コミットしたい変更をチェックした状態で Commit のボタンを押すだけです。オリジナルからクローンを作成していた場合は、設定画面でリモートリポジトリの指定をフォークしたリポジトリに変更してからコミット作業を行います。

(その後、オリジナルリポジトリの最新の状態を取り込む場合は、リモートリポジトリの指定先をオリジナルに戻してから同期します)

GitHub 上でフォークしたリポジトリのファイル情報を確認すると、コミットが成功したか判断できます。

  • フォークからオリジナルへのプルリクエスト

リポジトリのページの上部には "Pull Request" というボタンがあります。これを押すとプルリクエストを送信する画面が表示されます。

タイトルと、簡単な説明 (こちらはオプション) を記述して、"Send pull request" ボタンを押すと、プルリクエストが送られます。

ここまでが、ちょっと長くなりましたが、基本的な GitHub の使い方です。

CreateJS のドキュメントの翻訳作業を前提として書いた内容なので、コードの共有が目的で利用する場合は、もう少し知ってると便利な話もありますが、あまり構えずにとりあえず使ってみるのがよいように思います。

ということで、CreateJS ドキュメント翻訳に興味のある皆さま、ご協力よろしくお願いします。

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/414

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      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  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261