想定
- fork元リポジトリ
- https://github.com/octocat/Hello-World.git
- GitHubの公式マスコット?のやつにしてみました
- 上記リポジトリをforkした自分アカウントのリポジトリ
fork元は不特定多数の人からのプルリクエストにより更新される。
自分のリポジトリは基本自分のみが作業する。
自分もfork元にcontributeするには
- クローンしたリポジトリを更新する
- クローン元に対してプルリクエストを出す
という手順を踏む
クローン
自分のリポジトリをクローン
git clone https://github.com/****/Hello-World.git
remote設定
remoteにfork元追加
git remote add upstream https://github.com/octocat/Hello-World.git
ただしこれではpush先としても登録されてしまう。
git remote -v
upstream https://github.com/octocat/Hello-World.git (fetch)
upstream https://github.com/octocat/Hello-World.git (push)
origin https://github.com/****/Hello-World.git (fetch)
origin https://github.com/****/Hello-World.git (push)
もちろんpush時にoriginを指定していれば問題ないが、万が一があるのでupstreamへのpushを行わないようにする。
git remote set-url --push upstream ""
upstreamのpushが空白となる
git remote -v
upstream https://github.com/octocat/Hello-World.git (fetch)
upstream (push)
origin https://github.com/****/Hello-World.git (fetch)
origin https://github.com/****/Hello-World.git (push)
fork元の変更を取り込む
fork元の最新(mainブランチ)を取得
git fetch upstream/main
ローカルにマージする
git merge upstream/main