概要
Github にあるプルリクエストという機能は非常に強力で便利な機能です
簡単に言ってしまえば「あなたのコード修正してあげたから、そっちに適用してね」とお願いする行為になります
ただ、やり方がちょっと複雑だったり英語で文章を作ったりと大変です
今回はそんなプルリクエストをGithubでやってみたいと思います
環境
- git 2.3.0
- Github 2015/03/20時点
他のアカウントのリポジトリにプルリクエストを送ってみる
それでは実際にやってみます
forkする
これがプルリクエストへの第一歩です
forkとはリポジトリをコピーすることです
forkは必ず「自分でない誰かのリポジトリ」をforkしなければなりません
今回はテスト用のプルリクエストを実施するので、もしあるなら適当なリポジトリをforkしてください
ない場合は私のリポジトリのどれでもOKです
やり方は簡単で作成したリポジトリの右上にある「fork」ボタンをクリックしてください
するとforkがはじまります
自分のアカウントにコピーしているので多少時間がかかります
forkが完了したリポジトリを見ると誰からforkしたリポジトリなのかとアイコンが「Y」みたいなforkを示すアイコンに変わります
これでforkが完了しました
ブランチを作成する
自分が修正するためのブランチを作成しましょう
ブランチは作成しなくてもいいですが、作成したほうがいいです
理由としてはブランチ名を見るだけでどういうことをしたいのかというのを表すことができるからです
まずはforkしたブランチをcloneしてきます
git clone https://github.com/kakakikikeke-fork/cookbooks-emacs.git
cloneが作成したらブランチを作成してみましょう
git branch fix_let_to_progn
ブランチを移動しましょう
git checkout fix_let_to_progn
ブランチの作成と移動はこれでOKです
この作成したブランチに修正を入れていきます
修正する
作成したブランチ上のファイルに対して、何でもいいのでファイルを修正してみます
今回は明らかにバグを見つけているのでそのバグを直してみたいと思います
バグの箇所はcookbooks-emacs
のfiles/default/dot_emacs
の最後の方です
diffの内容は以下の通り
- git diff
diff --git a/files/default/dot_emacs b/files/default/dot_emacs
index 05d0389..9dbddc6 100755
--- a/files/default/dot_emacs
+++ b/files/default/dot_emacs
@@ -61,7 +61,7 @@
; for clipborad
(setq sysname system-type)
(if (eq sysname 'darwin)
- (let
+ (progn
(defun copy-from-osx ()
(shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
diff を確認できたらgit add
-> git commit
をしていきます
修正をブランチにコミットする
ここでコミットするのはまだ自分のforkしたリポジトリのブランチなので、fork元にアカウントのリポジトリには何も変更を加えないので安心して実行してください
git add files/default/dot_emacs
git commit -m "fix let to progn"
コミットメッセージは簡潔に、かつわかりやすくしましょう
また、commit する前に.git/config
のname
の部分がちゃんとGithubのアカウントになっているか確認しましょう
適当な状態で commit するとコミットした名前とメールアドレスが作業マシンごとに自動生成されてしまいGithub上でアイコン等がちゃんと表示されないで注意してください
ではpushしてみます
git push -u origin fix_let_to_progn
origin
は自分を表しています
fix_let_to_progn
はpushしたいブランチ名を指定します
アカウント名とパスワードが聞かれるので入力してください
認証が成功すれば無事pushされるはずです
認証に失敗する場合は.git/config
の設定を確認してください
[remote "origin"]
のurl
の設定が自分のリポジトリを指しているか確認してみましょう
これが、fork元のアカウントのリポジトリになっていると認証で失敗してしまいます(勝手にfork元のリポジトリにはpushできないので)
Github上でコミット内容を確認する
forkした自分のリポジトリを確認してみます
すると以下のような感じの表示が追加されています
プルリクエストはここから作成することができます
またbranchs等のタブを確認するとローカルにあったブランチがちゃんとGithub上にも登録されていることがわかると思います
では、本題のプルリクエストを作成してみましょう
プルリクエストの文章を作成する
先ほどの緑色のボタンをクリックするとプルリクエストを作成する画面に遷移します
プルリクエストを送信するのに必要な最低限の内容は以下の3つです
- どの自分のブランチをどの相手のブランチにマージしてほしいか選択する
- タイトルを入力する
- 内容を記載する
タイトルの部分はコミットログの内容が自動的に入力されます
正直ここのタイトルと内容の部分がマージされるための肝と言ってもいいかもしれません
タイトルは変えてもOKです
内容の部分は今回のように少しの修正であれば、そこまで細かく必要はないです
機能の追加や設定項目等があれば、まずはざっくりと何ができるのかを「Abstract」という見出しで記載して、詳細は「Detail」や「Configuration」「How to use」といった見出しを作成して具体的な設定方法や使い方を記載するといいと思います
Markdownも使うことができます
Markdownを使ったらプレビューで確認してからプルリクエストを送るようにしましょう
この辺の書き方は本当に人それぞれです
適当に書いてもマージしてくれる方もいれば、そうでない方もいるといった感じです
無理に英語で書く必要もないですが、できれば英語がいいです
fork元のリポジトリの言語に合わせるでもいいと思います
必要な内容を記載できたら「Create pull request」でプルリクエストを作成しましょう
このあとは
プルリクエストの作業自体はこれで完了です
あとはマージされるのを待ちましょう
これもユーザによってまちまちですが、すぐにマージしてくれる人もいれば、全く応答がなく放置されてしまう場合もあります
どうしてもプルリクエストをマージしてほしい場合は他のアカウントが「+1」などしてくれる場合もあります
また送信したプルリクエストに対して自分で催促することも可能です
可能ですがあまりしつこく催促するとクローズされてしまうこともあるので注意しましょう
最後に
簡単ですが、プルリクエストを実施する手順を紹介しました
ボクが一番大変だと思うのはやっぱりプルリクエストの文章を作成するところだと思います
特に初プルリクエストの場合はそのリポジトリ、アカウントの活動や雰囲気もわからないので、どこまでフランクに書けばいいのか判断するのが難しいかなと思います
まぁでも割りと適当でも結構快く受け入れてくれる人が多いかなと思いますw
プルリクエストはOSS開発では非常に便利な機能なのでぜひ使ってみてください
0 件のコメント:
コメントを投稿