2023年4月30日日曜日

書き込み権限のないGitHubリポジトリーへプルリクエストを出す方法メモ

 ただの備忘録です。たまに人様のリポジトリーにプルリクエストを出すけど、その度にやり方を忘れるので。

全体図

まずは全体の構成図です。

リモートリポジトリーを2つ用意し、ローカルからは

  • origin: フォークした自分のアカウント内のリポジトリー(フォーク先)
  • upstream: オリジナルのリポジトリー(フォーク元)

という名前でアクセスできるようにします。これのやり方は後で説明します。originがオリジナルじゃないのがちょっとモヤっとしますが文句言うな

次にプルリクエストを出すときの作業ですが、以下の図のような手順で行ってください。

  1. オリジナルのリポジトリーから最新のソースコードをgit pull
  2. ローカルのリポジトリーでブランチを切って変更作業
  3. 自分のリポジトリーへgit push
  4. フォーク元へプルリクエスト作成

これのやり方も後で説明しますが、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 件のコメント:

コメントを投稿