LoginSignup
237
159

More than 1 year has passed since last update.

OSS初心者がRailsにプルリクエストを送ってマージされるまでの一部始終

Last updated at Posted at 2019-03-27

はじめに

本稿はOSSにプルリクエストを送ったことがない方に対する「自分はこういう方法でプルリクエストを送ったぞ!」という体験記として投稿させて頂きます。初心者であってもOSSに興味がある方にはご一読頂ければ嬉しいです。

前提

GitHubを使って開発をしたことがある前提の内容が一部含まれます。
(これからの方にもなるべく分かるように書きますが念のため)

今回出来たこと

Rails本体に送ったプルリクエストがマージされました:tada:
image.png

Rails Contributors掲載サイトに載った
image.png

オレンジの部分が自分の名前(畏れ多い)
image.png

OSSにプルリクエストを送る手順

OSSごとにコントリビューション(貢献)におけるガイドラインがあるので、まずそちらに目を通しましょう。

※ Railsの場合は以下を参照!
https://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html

目次

  1. プルリクエストを送りたいリポジトリをForkする
  2. 自分の手元のリポジトリを確認
  3. 自分の手元にForkしたリポジトリをローカルにcloneする
  4. ローカルでブランチを切る
  5. 修正をコミット
  6. テストが通ることを確認
  7. git remote -vでリモートとして登録されているリポジトリを確認する
  8. 本体をupstream,自分のリポジトリをoriginとして登録する
  9. もう一度remoteとして登録されているリポジトリを確認
  10. origin(自分の作業リポジトリ)へプッシュする
  11. 本体のリポジトリを開いてプルリクを出す
  12. マージを待つ

1. プルリクエストを送りたいリポジトリをForkする

※ Forkが分からない方はこちらを参照 :リポジトリのcloneとforkの違い

image.png

2. 自分の手元のリポジトリを確認

image.png

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 masterorigin部分のことです。

$ 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先にプッシュしても本体にプルリク出せるよ!の表示が出るのでそこからプルリクを作ります。

こんな感じのやつ↓↓↓

image.png

当たり前ですが説明文は英語なので頑張りましょう。
※ ブラウザで出来る英文チェッカー
http://lifeiscolourful.hatenablog.com/entry/grammarly-n-writing

image.png

12. マージを待つ

無事にプルリクエストがマージされたことを確認しました :sob:

image.png

補足:remoteの最新をoriginに取り込みたいとき

git fetchでupstream(元のリポジトリ)の最新を取ってくる

$ git fetch upstream

upstream(元のリポジトリ)の最新をorigin(自分の手元)にマージする

$ git merge upstream/master

remoteの自分管理のリポジトリを最新にしたい場合はそのままプッシュする
※ 絶対に元のリポジトリ(upstream)のmasterにプッシュしてはいけません

$ git push origin master

最新の状況になったことを確認します

image.png

最後に

はじめる前は、すごい複雑で一部の「選ばれし人々」によって行われる活動がOSSだと思ったのですが、やること自体はシンプルでした。「ここ直した方がいいかも?」と思ったところを修正して、それがマージされるのは皆んなの公園を綺麗にしたみたいで気分がいいですね!!
皆さんもぜひOSSに一歩踏み出してみてはいかがでしょうか?

237
159
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
237
159