本家の最新を取り込みながら安全に自分のリポジトリで修正したいとき
はじめに
本家リポジトリをforkして、それを上流に設定し、最新を取り込みながらfork先のリポジトリに修正したいときに今回の手順を踏みます。
本家に直接pushができないときに、こういった形を取ることがあります。
この流れを"Fork & Pull モデル"と呼びます。
本家リポジトリをfork
取り込みたいリポジトリを、自身のアカウントなりでforkします。
GitHubからでもいいですし、hubコマンドがある方は"hub fork"でもいいです。
hubコマンドとは、CLIでGitHubの操作ができるツールです。
github.com
リモート一覧にupstream追加
取り込みたいリポジトリを"upstream"としてリモート一覧に追加します。
% git remote add upstream git@github.com:[organization or user]/[repository].git
間違って本家からリポジトリを取ってきてしまったときは、originのリモートURLを変更すればよいです。
% git remote set-url origin git@github.com:kitakitabauer/[repository].git
リモート一覧を確認すると、"upstream" が追加されていることがわかります。
% git remote -v origin git@github.com:kitakitabauer/[repository].git (fetch) origin git@github.com:kitakitabauer/[repository].git (push) upstream git@github.com:[organization or user]/[repository].git (fetch) upstream git@github.com:[organization or user]/[repository].git (push)
上流の更新を取り込む
上流の更新を取得して反映させる場合は下記の通りです。
% git fetch upstream % git merge upstream/master
または一度にpullしてしまいます。
% git pull upstream master
ブランチ作成
ローカルリポジトリにブランチを作成してcheckoutします。
% git checkout -b [開発ブランチ名] Switched to a new branch '開発ブランチ名'
新しいブランチに切り替わっていることを確認します。
% git branch * [開発ブランチ名] master
originにpush
originに対して、ローカルで作成したブランチ名を指定して、空ブランチをpushします。
% git push origin [開発ブランチ名] Total 0 (delta 0), reused 0 (delta 0) To git@github.com:kitakitabauer/[開発repository].git * [new branch] 開発ブランチ名 -> 開発ブランチ名
CI の結果を確認する場合
% hub ci-status
上流のmasterブランチへPR作成
- iでissueに紐付けて作成できます。
hub pull-request [branch name] -i [issue id]
おしまい。