强制如何将我本地的所有内容合并到远程主机中?
问题在于一个团队成员错误地创建了一个名为“Head”的单独分支(主分支是主分支)。 “头”有最新的代码,我现在想覆盖写入主(因为它是所有代码的最新版)。
当我尝试执行“合并头到主”我得到一个错误说“无关分支”。 我搜索了一下,发现我需要在本地拉出分支(“Head”),然后将其推送(或强制推送)到远程“主”分支以合并代码。
我使用了以下命令: git fetch && git checkout Head
并将其检出(克隆)到本地。 现在,当我试图推动它显示,我是17落后,3推动改变。
强制如何将我本地的所有内容合并到远程主机中?
谢谢
编辑
我做了什么das-g告诉,但似乎我在远程看到的唯一变化是Head
分支被删除。 原本在Head
的代码更改已经消失(或丢失了!!!)。 我可以看到标签和历史记录,但似乎这些更改将永久删除!
截图:
这似乎从你的屏幕截图和错误消息master
和Head
没有任何共同的祖先。 如果我理解正确,
master
人员拥有Head
的当前内容(以及正确的内容,而不是Head
的内容与master
内容合并), master
的血统中。 (因此, git checkout master; git reset --hard Head
不是一个选项。) 正如VonC所建议的那样,您可以根据主人的Head
承诺重新设置Head
承诺,以Head
的承诺将被重写的价格产生线性历史记录。
如果你想保持Head
的提交完全一样,你可以做一个有点模糊的合并:
首先,确保你的本地master
是最新的(从你的截图看来,这似乎不是)
git checkout master
git merge --ff-only origin/master
实际的合并
git checkout Head
git merge --strategy ours master
将合并提交到master
git checkout master
git merge --ff-only Head
你现在可能想要摆脱这个奇怪的Head
分支
git branch -D Head
并将所有内容(包括分支删除)放到远程仓库中
git push origin master :Head # should not need a force-push as no commits are discarded on the remote site
首先,不要调用分支“Head”:这与HEAD非常接近,它引用了“当前提交”。
你可以轻松地重命名它: git branch -m Head Tip
关于无关分支的情况,你可以尝试在主控之上挑选它:
git checkout master
git checkout -b tmp
git cherry-pick Tip~2 Tip~1 Tip
git branch -f Tip tmp
git checkout Tip
( rebase --onto
选项有点复杂)
一旦本地一切正常,您可以更新远程回购中的新分支名称:
git push origin --set-upstream Tip
git push origin :Head
链接地址: http://www.djcxy.com/p/90393.html
上一篇: How do force merge everything i have locally into the remote master?