git - 如何安全地将 remote1:master 推送到 remote2:branch123
问题描述
问题:我想将分支从一个遥控器推送到另一个遥控器。这是我到目前为止所做的:
注意:我已经有一个遥控器可以说origin1
git remote add origin2 repolink.git
git fetch origin2
现在我有本地origin2
及其分支机构。
结构:
local
master
remote
origin1
master
origin2
master
branch123
要求:我想推local:master
到orgin2:branch123
。branch123
已经有源文件和提交。
选项: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
.
请看图片:
请告知哪个选项是安全的或最好的,以及哪些命令有用。我现在在版本控制管理方面有点天真。
解决方案
这对我有用:
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
as好吧,但是 git 会提示merge
或者rebase
,我做了rebase
并origin2:branch123
HEAD
移到了local:branch123
HEAD
重新定位到origin2:newbranch
. (可以搜索变基远程分支等。我是在 pycharm IDE 中完成的,所以它提示我有两个选项merge
或rebase
.
无论如何。现在有点幸运,我将一个unrelated branch history
origin1:master
添加到另一个分支origin2:branch123
中,我可以合并到origin2:main/master
分支中。