GitHubのプロジェクトにプルリクエストをばお願いしてマージしてもらうときに、一般的なプルリクエストの方法などはあちこちで記事にされていますので、それ以外のちょっぴり外れたことをするための覚書です。
- gitコマンドからgithubにpushする際にパスワードが聞かれますが、パスワードによる認証は廃止されているため、Personal access tokenを取得する必要があります。
- そこで、まず画面右上のアイコンからuser navigation menuを開き、Settingsを選択します。
- Settings画面を開いたら、画面左の大量にあるメニュー項目の一番下のDeveloper Settingsを開きます
- 画面左のメニューからPersonal access tokensを選択し、Fine-grained tokens または Tokens( classic ) を選ぶと、メニューの左側のペイン、要は画面中央にボタンが一つ表示されるので、そいつを押下します。
押下するとまたもたFine~かclassicかを選ばされる場合がありますが、もう一度選択します。 - このトークンでgithubにアクセスする場合の権限やら有効期限やら山ほどあるチェックボックスが表示されて問われます。どのくらいの期間をこのトークンで作業するか、そのトークンで作業する際に必要な権限はどんなかな~と判断してチェックしてください。
- 発行が成功するとすごい長い一行の文字列が表示されますので
記憶してくださいムリメモって下さい。そいつが以後gitコマンドを使用する際のパスワード代わりになるトークンです。 - なお、その画面を閉じると再表示されません。トークンを削除して再発行する必要があります。
- このトークンはgithubにpushするまで必要ありません。ご苦労様でした。
- webブラウザでプルリクエストを発出したいプロジェクトの画面を開いてください。
そして、プロジェクト名の右に並んでいるボタンのうち、Forkをクリックしてください。 - githubからForkしてきたプロジェクトを自分の開発環境にcloneしてください。
どっからクローンすんの?って場合はなんだか緑色の <> Code ボタンを押してください。
そうすると白く塗りつぶされたところに https://github.com/自アカウント名/リポジトリ名 と表示されていますのでcloneします。 - Fork元でも開発用のブランチが切られていて、そこだけcloneしたい場合は
とすると、不要なものがなければ誤操作する可能性も減りますので面倒がありません。$ git clone -b ブランチ名 https://github.com/自アカウント名/リポジトリ名 - cloneしたローカルリポジトリにFork元のプロジェクトを上流リポジトリとして指定します。
$ git remote add upstream https://github.com/Fork元のリポジトリ名 - 上流を追加したかどうかを確認するには git remote -v コマンドで確認できます。
- git fetch コマンドでいつでもローカルとfork元のリポジトリの違いを確認できるようになります。
- ローカルリポジトリに自分の名前とemailアドレスを設定します。
$ git config --local user.name 自ユーザ名 $ git config --local user.email 自メールアドレス - githubの設定でメールアドレスを非公開に設定していても、commitログなどでメールアドレスが公開されてしまいますので、明示的に非公開に設定した際に github から発行されたダミーアドレス( ID+username@users.noreply.github.com といった形式です) を、ローカルリポジトリに明示的に設定してあげる必要があります。
- メールアドレスの公開・非公開は画面右上のアイコン ( User navigation menu ) のSettings 画面左のメニューからEmalisを選択し、 Keep my email addresses private をOnにします。
- Windowsの人などは、gitにパーミッションの変更をしただけのファイルを改変とはみなさない設定をすると楽になる場合があるかもしれません。
$ git config --local core.filemode false - cloneしてきたら、さらに自分用にブランチを切るとご安心です。
$ git checkout -b 自ローカル作業用ブランチ名 - ここでパッチを当てたい作業をして、作業を完了させます。
- 成果物をaddしてcommitします。
- 自ローカルリポジトリをgithubにpushします。
$ git push origin 自ローカル作業用ブランチ名 - ここでgithubへのログインのためのアカウントとパスワードを聞かれますが、githubではパスワード認証は廃止されていますので、冒頭で取得したトークンをパスワード代わりに入力します。
- 間違ってpushしちゃって取り消す場合
$ git push --delete origin 自ローカル作業用ブランチ名 - githubのwebインターフェイスを開きます。
- オリジナルのfork元のプロジェクトが更新されていないかを確認します。
This branch is up to date with fork元プロジェクト名
と表示されていなければ、 Sync fork ボタンを押して最新版と同期します。 - コンフリクトをしていないことを確認したら Compare & pull requests ボタンを押して、baseブランチとcompareブランチがあっていることを確認してから通常通りpull requestを発出します。
- レビューをしてもらって指摘を受けた点を修正した場合は、commitしてpushするだけで、webインターフェイスでの操作は必要はありません。
- マージされたら、ローカルのcloseリポジトリとgithub上の自fork先リポジトリが、fork元のオリジナルリポジトリとの間に差異が生じますので、手動で更新する必要があります。
- github上の自fork先リポジトリはwebインタフェイスから Sync fork ボタンを押下して同期します。
- ローカルのcloseリポジトリは、pullまたはcloneし直しが必要です。
以上です。どなた様の役にも立ち層のない記事で申し訳ございません。