Help us understand the problem. What is going on with this article?

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

はじめに

本稿は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に一歩踏み出してみてはいかがでしょうか?
最後に宣伝になりますが、私が運営メンバーの一人をしているTama.rbという地域RubyコミュニティでもOSSのコードを読んで皆んなでワイワイする活動をはじめました。
OSS活動はじめたいけど一人だけだと、どうして良いのか自信ない...って方はTama.rbのslackだけでも参加頂けると嬉しいです!皆んなでワイワイOSS活動を楽しみましょう:relaxed:

fuqda
Tama.rbという地域Rubyコミュニティを主催しています。 https://tamarb.connpass.com はてなブログはこちらです! https://fuqda.hatenablog.com/
storesjp
インターネットビジネスの企画・開発・運営、マーケティング、プロモーション、コンテンツの企画・制作
https://about.stores.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした