LoginSignup
1
0

More than 3 years have passed since last update.

継続的に他の方が作成したGit repoからcheckoutし、修正を適用した上で自分のrepoとしてpushする

Posted at

先人の知恵・知見に感謝

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
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0