rcmdnk's blog

20130519_pull_request_200_200

GitHubを使い始めてしばらく経ちましたが、始めて初めて 1 Pull Requestをしてみたので やり方をメモしておきます。

Pull Requestを送ったレポジトリ

以前Octopressへ絵文字の導入で紹介した jekyll-emojiと言う プラグインに対して、emojiのイメージを外部における様な設定を可能にする 変更をリクエストしてみました。

実際に行った手順

Forkする

まず、GitHubにログインした状態で リクエストを送りたいレポジトリのページに行きます。

各レポジトリの右上にはForkと言うボタンがあるので、このボタンをクリックします。

そうすると自分のアカウントにレポジトリのコピーが出来るので、 このレポジトリに対して変更を行なって行くことになります。 自分のページのRepositoriesで確認が出来ます。

Forkした相手のレポジトリはこんな感じで自分のContributions にも載ります。

Forkしたレポジトリをclone

Forkしたレポジトリをローカルにcloneして変更を行います。

通常のレポジトリ同様、リモートのアドレスを確認してcloneします。

git clone [email protected]:rcmdnk/jekyll-emoji.git

GUIアプリでやっている人はそちらで。

作業用ブランチを作って変更を適用する

色々な所で書かれてますが、Pull Requestを送る時は作業用のブランチを 作ってそちらからリクエストを送るのが良い様です。

今回の様な頻繁に更新されない様なレポジトリに対して、 ちょっとした変更を送るだけならあまり気にすることではないと思いますが、 オリジナルが頻繁に更新されるような場合や自分の変更に時間がかかる場合は、 Masterブランチをオリジナルの変更を追うためのブランチとして活用する、 というのが1つの理由です。

今回は外部へemojiディレクトリを置く、と言うことでexternalと言うブランチを 作りました。

cd jekyll-emoji
git checkout -b external

これでexternalブランチに移ったのでゴニョゴニョと変更します。

変更をcommitしてリモートへpush

git commit -am "add external flags"
git push origin external

これでGitHubのレポジトリにexternalブランチが出来ます。

Pull Requestを送る

GitHubに戻り変更を行ったレポジトリのページからPull Requestを送ります。 作業を行ったブランチへ変更し、ページ上部のPull Request ボタンを押すとPull Requestをするページに移動するので、 適宣コメントを書いてリクエストを送ります。

オリジナルの作者とやり取りしながら変更を取り込んでもらう

Pull Requestを送ると、 このような ページでやりとりを行える様になります。

ここで作者とやり取りしながら適宣修正して取り込んでもらうようにします。

もし、自分の変更をさらに修正したい場合は単に自分のレポジトリの該当ブランチを アップデートすれば(commit&push)そのまま相手にも伝わります。

今回は2回程アップデートをした上で取り込んでもらいました。 (2回目は単なるバグでしたが…)

まとめ

今回は小さなアップデートだったので簡単なことしかしていませんが、 さらに数回に渡ってコミットした後に送る場合や、 オリジナルのアップデートがあってそれを取り込んだりすることが 必要になる場合がありますが、 それらについて、さらに詳しい説明は以下のページがとてもわかり易かったです。

Ref: GitHubへpull requestする際のベストプラクティス

ちなみに、commitの説明文て、動詞を現在形と過去形とどっちで書くのが 正しいのだろう、とたまに考えながら、でも殆ど気にせず 気が向く方で書いていたのですが(上の変更でも最初はaddで次はfixed) どうなんでしょう? 職場に居るネイティブの人達も人によって違ったりするので 語学的な感覚でもどっちでもありみたいですが、 どっちでも良いから最初にガイドラインを作っておいてそれに従う、 と言うようにするべきなんでしょうね、多分。

Ref: 続: コミットログは現在形?過去形?それとも?

Sponsored Links
  1. 追記:題名も始めて初めてへ。。。題名で間違えると致命的。。。

Sponsored Links

« Firefoxの表示をすっきりカスタマイズ Octopressでのプレビュー方法 »

}