ただの備忘録です。たまに人様のリポジトリーにプルリクエストを出すけど、その度にやり方を忘れるので。
全体図
まずは全体の構成図です。
リモートリポジトリーを2つ用意し、ローカルからは
- origin: フォークした自分のアカウント内のリポジトリー(フォーク先)
- upstream: オリジナルのリポジトリー(フォーク元)
という名前でアクセスできるようにします。これのやり方は後で説明します。originがオリジナルじゃないのがちょっとモヤっとしますが文句言うな。
次にプルリクエストを出すときの作業ですが、以下の図のような手順で行ってください。
- オリジナルのリポジトリーから最新のソースコードを
git pull
- ローカルのリポジトリーでブランチを切って変更作業
- 自分のリポジトリーへ
git push
- フォーク元へプルリクエスト作成
これのやり方も後で説明しますが、4はGitHubのWebUI上からできるので省略します。お前ならできる。
やり方
いよいよ具体的な手順です。実例として、現在プルリクエスト作成中のgo-coapを例に説明します。
とりあえずGitHub内で自分のアカウントへのフォークはできたものとして話を進めます。
全体の構成の作り方
まずは、フォーク先(自分のアカウント)のリポジトリーをgit clone
します。
git clone git@github.com:shimataro/go-coap.git
これでデフォルトの設定として、originがフォーク先を向いているはずです。
次に、新しいリモートリポジトリーupstreamを作成し、フォーク元と結びつけます。
git remote add upstream https://github.com/plgd-dev/go-coap.git
upstream
という名前のブランチを作成し、フォーク元のデフォルトブランチ(ここではmaster
)と結びつけます。
git branch upstream git branch --set-upstream-to=upstream/master upstream
これで最初の構成図が出来上がりました。
開発時の手順
1. オリジナルのリポジトリーから最新のソースコードをgit pull
upstream
ブランチはフォーク元に紐づけているので、このコマンドで最新のソースコードを取得できます。
git checkout upstream git pull
2. ローカルのリポジトリーでブランチを切って変更作業
例えばfeature/something
というトピックブランチを作成する場合。これは別に特別なことはしていません。
git checkout -b feature/something
ここで気が済むまで変更作業をします。
3. 自分のリポジトリーへgit push
フォーク元に書き込み権限がないので、push先はフォーク先(自分のリポジトリー)です。
git push --set-upstream origin feature/something
4. フォーク元へプルリクエスト作成
ここは省略します。
これでプルリクエストまでの流れが完成です。新しいプルリクエストを出すときも、同じように①〜④の手順でOKです。
時間が経つとフォーク先のデフォルトブランチがフォーク元と乖離しますが、作業に影響はありません。気になる方は定期的にupstream
ブランチの内容をフォーク先にgit push
しましょう。
いつもリモートリポジトリーupstreamの登録のしかたを忘れるんだよなぁ。
0 件のコメント:
コメントを投稿