[git][OSS]Upstream開発
GitHubで公開されているオープンソースなコードを利用する際、修正が必要になった場合の対応方法として、Upstream開発の手順を説明する。
Upstream開発とは、簡単に説明すると、修正内容を本家にpull requestを投げて取り込んで貰い、独自に手を加えてしまった結果、本家から枝分かれする状況を避ける方法だ。
利用しているOSSへの貢献にもなるので、一石二鳥とも言える。
GitHubでforkする
GitHubで本家から自分の領域にforkする。
理由は、本家のリポジトリは普通はpush権限がないので、修正は自分のリポジトリに対して行う。
自分の作業領域にcloneする
$ git clone git@github.com:murakami/cocos2d-x.git
$ cd cocos2d-x
本家と内部のリポジトリをリモートに追加する
forkしたリポジトリで修正作業を行うのでなく、別に内部のリポジトリが存在する前提で、本家と内部のリポジトリをリモートに設定する。
その理由は、後で分かる。
$ git remote add upstream git@github.com:cocos2d/cocos2d-x.git
$ git remote add bitz ssh://git@git.bitz.co.jp/bitz/cocos2d-x.git
$ git remote
bitz
origin
upstream
設定されていることを確認。
本家とfork先を同期する
$ git fetch upstream
$ git pull upstream ブランチ名
$ git push origin ブランチ名
内部リポジトリの修正内容をfork先にchery-pickで取り込む
$ git fetch bitz
$ git checkout -b feature/修正ブランチ名
$ git cherry-pick XXXXXX
$ git push origin feature/修正ブランチ名
本家に対してPull requestを作成する
GitHubのforkしたリポジトリのPull reqestsで、本家のブランチに対してPull requestが作成する。
forkしたブランチは公開されているものなのと、余計なログで汚れていないことが望ましいということで、forkしたブランチで開発作業を行うのは避けたほうがいい。
【関連情報】
- Cocoa.swift 2019-02
- Cocoa.swift
- Cocoa勉強会 関東
- MOSA
- Cocoa練習帳
- Qiita
この記事が気に入ったらサポートをしてみませんか?