はじめに
本稿はOSSにプルリクエストを送ったことがない方に対する「自分はこういう方法でプルリクエストを送ったぞ!」という体験記として投稿させて頂きます。初心者であってもOSSに興味がある方にはご一読頂ければ嬉しいです。
前提
GitHubを使って開発をしたことがある前提の内容が一部含まれます。
(これからの方にもなるべく分かるように書きますが念のため)
今回出来たこと
OSSにプルリクエストを送る手順
OSSごとにコントリビューション(貢献)におけるガイドラインがあるので、まずそちらに目を通しましょう。
※ Railsの場合は以下を参照!
https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html
目次
- プルリクエストを送りたいリポジトリをForkする
- 自分の手元のリポジトリを確認
- 自分の手元にForkしたリポジトリをローカルにcloneする
- ローカルでブランチを切る
- 修正をコミット
- テストが通ることを確認
- git remote -vでリモートとして登録されているリポジトリを確認する
- 本体をupstream,自分のリポジトリをoriginとして登録する
- もう一度remoteとして登録されているリポジトリを確認
- origin(自分の作業リポジトリ)へプッシュする
- 本体のリポジトリを開いてプルリクを出す
- マージを待つ
1. プルリクエストを送りたいリポジトリをForkする
※ Forkが分からない方はこちらを参照 :リポジトリのcloneとforkの違い
2. 自分の手元のリポジトリを確認
3. 自分の手元にForkしたリポジトリをローカルにcloneする
$ git clone git@github.com:Shigeyuki-fukuda/rails.git
4. ローカルでブランチを切る
$ git checkout -b ブランチ名
5. 修正をコミット
$ git commit -m "英語のコミットメッセージ"
6. テストが通ることを確認
テストを実行したところテストが落ちてたのですが...
修正と関係ないところだったので、今回は一旦、無視しました。
(この修正の時master自体のCI落ちてた?のもあり一旦スルー)
通常は注視した方がいいかもです。
$ rake test
7. git remote -vでリモートとして登録されているリポジトリを確認する
Shigeyuki-fukuda/rails
がremoteのoriginとして登録されていることを確認。
※ Git初心者の方へ
remoteというのはコミットして修正をプッシュする目的地というイメージ
例えばgit push origin master
のorigin
部分のことです。
$ git remote -v
origin git@github.com:Shigeyuki-fukuda/rails.git (fetch)
origin git@github.com:Shigeyuki-fukuda/rails.git (push)
8. 本体をupstream,自分のリポジトリをoriginとして登録する
OSSの慣習で元のリポジトリをupstreamとし、自分の手元をoriginとして登録するみたいです。
$ git remote add upstream https://github.com/rails/rails.git
$ git remote add origin git@github.com:Shigeyuki-fukuda/rails.git
9. もう一度remoteとして登録されているリポジトリを確認
これでFork元のrails/rails
の方がupstreamならOKです。
$ git remote -v
origin git@github.com:Shigeyuki-fukuda/rails.git (fetch)
origin git@github.com:Shigeyuki-fukuda/rails.git (push)
upstream https://github.com/rails/rails.git (fetch)
upstream https://github.com/rails/rails.git (push)
10. origin(自分の手元の作業リポジトリ)へプッシュする
origin
へプッシュする
$ git push origin 修正ブランチ名
11. 本体のリポジトリを開いてプルリクを出す
キャプチャ忘れてしまったのですが、本体のリポジトリを開くとプルリクを出せるぞ!という表示が通常通り出ます。
Fork先にプッシュしても本体にプルリク出せるよ!の表示が出るのでそこからプルリクを作ります。
こんな感じのやつ↓↓↓
当たり前ですが説明文は英語なので頑張りましょう。
※ ブラウザで出来る英文チェッカー
http://lifeiscolourful.hatenablog.com/entry/grammarly-n-writing
12. マージを待つ
無事にプルリクエストがマージされたことを確認しました
補足:remoteの最新をoriginに取り込みたいとき
git fetchでupstream(元のリポジトリ)の最新を取ってくる
$ git fetch upstream
upstream(元のリポジトリ)の最新をorigin(自分の手元)にマージする
$ git merge upstream/master
remoteの自分管理のリポジトリを最新にしたい場合はそのままプッシュする
※ 絶対に元のリポジトリ(upstream)のmasterにプッシュしてはいけません
$ git push origin master
最新の状況になったことを確認します
最後に
はじめる前は、すごい複雑で一部の「選ばれし人々」によって行われる活動がOSSだと思ったのですが、やること自体はシンプルでした。「ここ直した方がいいかも?」と思ったところを修正して、それがマージされるのは皆んなの公園を綺麗にしたみたいで気分がいいですね!!
皆さんもぜひOSSに一歩踏み出してみてはいかがでしょうか?