先人の知恵・知見に感謝
Qiitaの 'GitHubでFork/cloneしたリポジトリを本家リポジトリに追従する' という記事をもとにした。
やりたいこと
要約
上記掲載の記事を参考とし、Tagへの追従が必要だったので以下手順を作成した。
このエントリーはよりよい方法が確立でき次第更新する。
- 他に作成されているGit repoをもとにする
- 独自のpatchなどを適用したい
- conflictする/元ソースへの影響を出したくないなどの理由によりpull requestなどは行う予定がない
- 将来的にもとのGit repoが更新された際にも追従したい
- 参照元repoのbranchやtagについて指定を行う必要がある
現物
実際にやりたかったことは以下の通り。
- https://github.com/df8oe/UHSDR の安定版における最新リリース(tagで指定出来る)を取得
- 日本のバンドプランに合わせた調整(5MHz送出禁止/7MHz調整など)
- 調整したソースコードをbuild
- 新しいリリースが出た際には随時追従
ToDo
継続的に参照元からのpullと手許masterでの継続的作業の検証。
全体を見通す
git clone git@github.com:${MYNAME}/${MYREPO}.git
cd ${MYREPO}
git remote add upstream https://github.com/${YOURNAME}/${YOURREPO}.git
git ls-remote --tags upstream
git pull upstream tag ${YOURTAG} --allow-unrelated-histories
(edit)
git add -A
git tag ${YOURTAG}
git commit -m "${MYCOMMITMSG}"
git push origin ${YOURTAG}JA
事前準備
自分のrepoを準備する
下記例にてすでに存在するGitHub repoのclone方法を示す。
Repo自体の作成方法はここでは扱わない。
git clone git@github.com:${MYNAME}/${MYREPO}.git
cd ${MYREPO}
参照したいrepoを登録する
下記例にて参照したいGit repoを upstream
にて扱う方法を示す。
git remote add upstream https://github.com/${YOURNAME}/${YOURREPO}.git
継続的適用
pullしたいtagを確認する
upstream
のタグ一覧を取得する。
git ls-remote --tags upstream
Tagを指定した上でpullする
upstream
の中から必要とするtagを指定し master
(すでに指定しているbranch)へのmergeを行う。
git pull upstream tag ${YOURTAG} --allow-unrelated-histories
修正(patch等)を実施する
vi/emacs/sed/patchなど好みの手法で実施する
編集内容をcommit/pushする
自分自身が持つrepoへのcommit/pushを行う。
タグは揃える。
git add -A
git tag ${YOURTAG}
git commit -m "${MYCOMMITMSG}"
git push origin ${YOURTAG}JA