一、 问题
有一仓库A 和 一仓库B, 需要将仓库A分支a1所有提交同步推送到仓库B分支b1上
二、 解决
2.1、 首先需要仓库A、仓库B的权限,
2.2、将仓库A clone到本地, 进入A目录,并且切换到a1分支
cd A ## A 为A仓库clone到本地代码的目录
git checkout a1 ##切换到a1分支,保证和远程仓库进度一致
2.2、 在本地目录A内和远程B仓库建立联系
git remote add BB http://gitlab.*******.git#BB 表示B仓库的命名, 可自行定义名称
#http://gitlab.*******.git 为B仓库的远程git地址
2.3、 将本地A目录的a1分支推送到远程B仓库的b1分支
git push BB a1:b1
## BB 表示 本地目录A内和远程B仓库建立联系时自定义的名称
## a1 表示源分支, b1表示需要被同步的远程分支
注:
推送时,可能会出现报错:
更新被拒绝,因为远程仓库包含您本地尚不存在的提交。这通常是因为另外
提示:一个仓库已向该引用进行了推送。再次推送前,您可能需要先整合远程变更
提示:(如 ‘git pull …’)。
提示:详见 ‘git push --help’ 中的 ‘Note about fast-forwards’ 小节。
这个时候需要将远程仓库B的b1分支拉取到 本地A目录下的a1分支内,进行合并代码
git pull BB b1 --allow-unrelated-histories
##当前目录A的a1分支执行该命令, 然后对冲突代码进行合并## 冲突解决完后, 保证a1分支的代码包含了远程b1代码所有提交并且没有冲突后, 再次进行推送
git push udd a1:b1
至此 a1 和 b1分支推送成功,并且两个分支的commit一致