git 2つのレポジトリで同じbranchを運用している際に、片方で伸ばしたbranchの途中のコミットまでをもう片方のbranchにpushしたい時の方法

ツール

滅多に無いケースかもしれないが、メモしておく。

$ 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される。

コメント

タイトルとURLをコピーしました