首页 > 解决方案 > 如何安全地将 remote1:master 推送到 remote2:branch123

问题描述

问题:我想将分支从一个遥控器推送到另一个遥控器。这是我到目前为止所做的:

注意:我已经有一个遥控器可以说origin1

  1. git remote add origin2 repolink.git
  2. git fetch origin2

现在我有本地origin2及其分支机构。

结构:

local
 master
remote
 origin1
  master
 origin2
  master
  branch123 

要求:我想推local:masterorgin2:branch123branch123已经有源文件和提交。

选项:1 origin2:branch123最后一次提交可以是local:master初始化提交的父级。我想这可能是变
option:2 origin2:branch123被强制替换为local:master. 在这种情况下,我将丢失 origin2:branch123 的提交,该提交由origin2:master. 我不知道在这种情况下是否local:master会与这样做冲突origin2:master(选项:2)

哪个选项是安全的。我更喜欢rebasing,因为origin2:branch123最后一次提交几乎与remote1:master init commit.
请看图片:
在此处输入图像描述

请告知哪个选项是安全的或最好的,以及哪些命令有用。我现在在版本控制管理方面有点天真。

标签: gitgithubbranchgit-remote

解决方案


这对我有用:

git push origin2 master:newbranch// master 是 origin1:master
git fetch origin2
git checkout newbranch// 来自 origin2,即 origin1:master 的副本
git checkout branch123//确保您在 branch123 中没有任何暂存或未跟踪的文件
//HEAD在 branch123
git rebase --onto newbranch
git push// 这将推送branch123现在的提交为newbranchas好吧,但是 git 会提示merge或者rebase,我做了rebaseorigin2:branch123 HEAD移到了local:branch123 HEAD重新定位到origin2:newbranch. (可以搜索变基远程分支等。我是在 pycharm IDE 中完成的,所以它提示我有两个选项mergerebase.

无论如何。现在有点幸运,我将一个unrelated branch history origin1:master添加到另一个分支origin2:branch123中,我可以合并到origin2:main/master分支中。


推荐阅读