47
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitHubでフォークしてプルリクしてOSSにコントリビューションする

Last updated at Posted at 2019-02-27

最近GitHubでフォークしてプルリクすることを覚えたのでそのやり方のメモです。他の人の成果物に貢献することがとても簡単にできます。

この記事はWebSphere LibertyのDockerfileに小さな間違いを見つけてを直してもらったときの例です。このDockerfileはApache License 2.0であり、一応、OSSにコントリビューションしたことになるのではないでしょうか。自分はインフラ寄りのエンジニアでありOSSへのコントリビューションとは無縁だと思っていましたが、プログラマでなくても例えばドキュメントなど、けっこう簡単にOSSにコントリビューションできるのではという印象です。

手順

以下の手順でフォークしてプルリクします。

フォーク

対象のリポジトリへ行き、右上のForkボタンを押します。

image.png

クローン

フォークした自分のリポジトリをクローンします。

git clone git@github.com:sotoiwa/ci.docker.git

upstreamを追加

リモートを確認します。

$ cd ci.docker
$ git remote -v
origin	git@github.com:sotoiwa/ci.docker.git (fetch)
origin	git@github.com:sotoiwa/ci.docker.git (push)
$

フォーク元リポジトリをupstreamとして追加します。

git remote add upstream git@github.com:WASdev/ci.docker.git

確認します。

$ git remote -v
origin	git@github.com:sotoiwa/ci.docker.git (fetch)
origin	git@github.com:sotoiwa/ci.docker.git (push)
upstream	git@github.com:WASdev/ci.docker.git (fetch)
upstream	git@github.com:WASdev/ci.docker.git (push)
$

フォーク元リポジトリとフォークしたリポジトリの同期

フォーク元リポジトリが更新された場合に、フォークしたリポジトリを同期するには以下のようにします。

# ブランチをmasterに変更
git checkout master
# upstreamからpullしてローカルのmasterを更新
git pull upstream master
# ローカルのmasterをoriginにpush
git push origin master

ブランチ作成

ブランチを作成してそのブランチをチェックアウトします。

git checkout -b fix/default-login-shell

修正してcommitしてpush

今回はuserのログインシェルが間違っていたのを修正しました。commitしてpushします。

git add .
git commit -m "Specify correct login shell when adding user"
git push --set-upstream origin fix/default-login-shell

プルリク作成

フォーク元、フォークした自分のリポジトリどちらに行っても、「Compare & pull request」ボタンが現れるので、ボタンを押してプルリクを作成します。

image.png

base repogitryがフォーク元のリポジトリのmasterブランチ、head repogitoryがフォークしたリポジトリの修正ブランチであることを確認します。

Issueに対する修正の場合はIssueの番号を書くと関連づけされます。

image.png

マージ

無事にマージされました。もし何か指摘された場合は修正してコミットすればいいはずです。

image.png

ブランチとフォークの削除

ブランチが必要なければGitHubでプルリクに表示される「Delete branch」ボタンで消しておきます。

image.png

フォークしたリポジトリ自体も不要なら「Delete fork」ボタンで消します。

おまけ

マージされるとそのリポジトリのcontributorsに載ります。ちょっと嬉しいです。

OSSライセンスはいろいろよくわかっていなかったので以下の本を読んで勉強しているところです。

参考リンク

47
33
1

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
47
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?