滅多に無いケースかもしれないが、メモしておく。
$ git remote add REMOTE https://url_remote/repo.git
としてリモートレポジトリをセットして、
$ git remote -v
REMOTE https://url_remote/repo.git (fetch)
REMOTE https://url_remote/repo.git (push)
origin https://url/repo.git (fetch)
origin https://url/repo.git (push)
となっているとする。
originの方でmaster branchを延ばしていき、リリース毎にREMOTEレポジトリにもマージしていきたいとする。
originのとあるコミットで、v1.0.0というtagが付けられたが、その後もoriginにはどんどんと変更がマージされていったとする。
asb134 modify1
fag321 modify2
srr098 v1.0.0
asb134とfag321はREMOTEにpushしたくない。srr098までのmasterとして、REMOTEにpushしたい。
単純に、origin/masterをcheckoutしてremoteにpushする方法は次の通り。
git checkout origin master
git push REMOTE master
しかし、この場合は、不要なコミットまで含めてREMOTEにpushされてしまう。
そこで、git resetを使う。
git checkout origin master
git reset --hard srr098
とすれば、origin/masterのローカルブランチがsrr098に移動する。その後、
git push REMOTE master
とすれば、v1.0.0のtagを打ったコミットまでのmasterがREMOTEにpushされる。
コメント