読者です 読者をやめる 読者になる 読者になる

ami_GS's diary

情報系大学院生の備忘録。ネットワークの勉強にハマっています。

Githubで初めてのPull Requestした

Github

はじめに

こんにちは、先日大学を卒業しました(それについては別に書こうかな?)
今回は昨日僕が初めてPull Requestしたので、それにについて書こうと思います。

Pull Requestって何?

Githubには数多くのリポジトリがあると思いますが、その分数多くのプログラムにバグであったり、不十分な所があったりするわけです。
そこで、気づいた人が「ここはこうしたらどうだろう?」と自分で書き換えたプログラムを元の作者に提案します。
これがPull Requestデス(多分)

さらに、それが作者に認められ、取り込まれることを「マージされる」と言います。


他人のプログラムに手を出すなんて恐れ多い・・・

安心してください、1行消すだけのPull Requestでも全然大丈夫です。
今回僕がrequestしたのも、2行消して1行付け加えただけです(;´ρ`)

将来的には関数加えたりしてPull Request出したいよね

本編

Pull Requestは以下の手順で行います。

  1. 目的となるリポジトリからfork、及びcloneする
  2. 新しいブランチで提案するプログラムを書く
  3. 自分のリポジトリにpushする
  4. Pull Requestを出す

目的となるリポジトリからfork、及びcloneする

これをしないと何も出来ません。以下の写真の右上にある「Fork」ボタンを押しましょう。
すると、自分のリポジトリにforkされたリポジトリが出来ると思います。
f:id:ami_GS:20140330124251p:plain

以下がfork後の自分のリポジトリ
senko/tornado-proxyからami-GS/tornado-proxyに変わっている事がわかると思いますf:id:ami_GS:20140330124631p:plain

これをlocalにcloneします(自分のPCにダウンロードします)
作業を行いたいディレクトリ内でcloneしましょう。

>> git clone [リポジトリのURL.git]

自分のリポジトリにある、HTTPS clone URLのボタンをクリックすればURLを取得できるので楽です。

新しいブランチで提案するプログラムを書く

以下のコマンドを実行するとmasterという文字が出力されると思います。これが現在のブランチです。

>> git branch
*master

masterブランチは、fork元のプログラムを追うために使うのが習慣らしく、自分の変更を加えたい場合は別ブランチで行うのが良いらしいです。



以下のコマンドで別ブランチを作り、移動します。今回は「external」というブランチを作ります。

>> git checkout -b external

確認してみましょう。上と同じように入力し、

>> git branch
master
*external

と出力されれば成功です。


これで準備は完了です。気になっているプログラムの部分を書き換えてください。

書き換えが完了したらいつも自分のリポジトリに行っているようにadd、commitを行います。

>> git add 変更を加えたファイル名
>> git commit -m "changed something"

自分のリポジトリにpushする

続いてpushをしますが、今回はexternalブランチをpushしたいので、以下のように引数を加えてpushします。

>> git push origin external

これでokです。

githubで確認してみましょう。以下の画像のように、中央右側に「Compare & Pull Request」ボタンが出ていればpush成功です。
自分のリポジトリに変更が加えられたので、元のリポジトリと比較もしくはPull Requestを送るか、という意味になります。
f:id:ami_GS:20140330131103p:plain

Pull Requestを出す

「Compare & Pull Request」ボタンを押すとページが変わります。
ここでは、変更した内容についてコメントを書く場のようです(適当)
以下が、僕の書いたコメントになります。かなり予防線張っていてダサすぎですね( ノД`)
f:id:ami_GS:20140330131540p:plain

書き終えたら、コメントダイアログの右下にある、「Send pull request」を押してPull Request完了です。
以下の様な画面に切り替わると思います。
f:id:ami_GS:20140330132234p:plain


くぅ〜疲れましたwこれにてPull Request完了です!

以上でリクエストを出す所までは完了しました。
この後は必要であればリポジトリ作者の人とコメント合戦をして、マージ(取り込まれる)されるかクローズ(取り込まれない)されるかになります。


僕も今マージ待ちということになるので、結果は追記していきたいと思います。(マージされてほしいなぁ・・・)

追記 (2014-4-5)

マージされました!やった!!!!
相手の方からも初Pull Requestを賞賛されてすごく嬉しい!!!!!
f:id:ami_GS:20140405193922p:plain