将一个Git分支移动到另一个Git仓库中
這個問題的背景
因为本来想要在同一个报告中管理的项目竟然分成了两个报告,所以我想将其整合到一个报告中,于是进行了调查。
这次有 repo_src 和 repo_dst 两个仓库,需要将 repo_src 的 target_branch 分支直接移动到 repo_dst 的 target_branch 分支上。
以下是中文的翻译:
步骤
1. 设置变量
为了在以后能够使用相同的命令,可以事先进行设置,就像这样。
REPO_SRC=https://github.com/nakamasato/repo_src
REPO_DST=https://github.com/nakamasato/repo_dst
REPO_SRC_PATH=~/repos/repo_src
REPO_DST_PATH=~/repos/repo_dst
TARGET_BRANCH=target_branch
将repo_src和repo_dst在本地克隆。
如果没有将Git的Remote推送到,就不需要克隆。只需要简单地设置REPO_SRC_PATH和REPO_DST_PATH就可以了。
git clone $REPO_SRC $REPO_SRC_PATH
git clone $REPO_SRC_PATH $REPO_DST_PATH
在repo_dst的一侧设置远程repo_src_remote。
cd $REPO_DST_PATH
git remote add repo_src_remote $REPO_SRC_PATH
在repo_dst端创建TARGET_BRANCH。
git branch -b $TARGET_BRANCH
在repo_dst端将TARGET_BRANCH重置为repo_src的TARGET_BRANCH。
git reset repo_src_remote/$TARGET_BRANCH --hard
这样,就可以将repo_src的$TARGET_BRANCH上的所有提交移动到repo_dst的$TARGET_BRANCH上。当然,即使repo_dst和repo_src上的目标分支不同也可以。
6. 删除无需的遥控器,从repo_dst中删除。
git remote rm repo_src_remote
请参考。
- Move git branch from one repository to another with preserving history