如何安全地将 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:master 推送到 orgin2:branch123branch123 已经有源文件和提交。

option:1 origin2:branch123 last commit 可以是 local:master init commit 的父项。我想这可能是重新定位
option:2 origin2:branch123 强制替换为 local:master在这种情况下,我将丢失由 origin2:master 分支的 origin2:branch123 的提交。我不知道在这种情况下 local:master 是否会与 origin2:master 发生冲突(选项:2)

哪个选项是安全的。我更喜欢 rebasing,因为 origin2:branch123 last commit 几乎与 remote1:master init commit 相同。
请看图:

enter image description here

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

解决方法

这对我有用:

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,它现在也有 newbranch 的提交,但 git 会提示 mergerebase,我做了 {{1 }} 和 rebase origin2:branch123 移至 HEAD local:branch123,后者重新基于 HEAD。 (可以搜索 rebase 远程分支等。我是在 pycharm IDE 中完成的,所以它提示我两个选项 origin2:newbranchmerge

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