问题是团队成员错误地创建了一个单独的分支(主分支是主分支),称为#34; Head"。 " HEAD"有最新的代码,我现在想要写入主页(因为它是所有代码的最新版本)。
当我尝试表演" Merge Head into master"我得到一个错误说"无关的分支"。我搜索了一下,发现我需要在本地拉出分支(" Head"),然后将其推送(或强制推)到遥控器#34; master"分支合并代码。
我使用了以下命令:
git fetch && git checkout Head
并将其检出(克隆)到当地。现在,当我尝试推动它时,显示我17次提交落后,3次更改推送。
如何将我本地拥有的所有内容合并到远程主控中?
由于
修改
我做了das-g告诉我的事情,但似乎我在远程看到的唯一变化是删除了Head
分支。最初在Head
中的代码更改已消失(或丢失!!!)。我可以看到标签和历史记录,但似乎永远删除了更改!!!
截图:
答案 0 :(得分:2)
首先,不要调用分支“Head”:距离HEAD, which references the "current commit"非常近。
您可以轻松地重命名: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
option is a bit more complex)
一旦在本地看起来一切正常,您就会更新远程仓库上的新分支名称:
git push origin --set-upstream Tip
git push origin :Head
答案 1 :(得分:2)
从您的屏幕截图和错误消息中可以看出master
和Head
没有任何共同的祖先。如果我理解正确的话,
master
的提示的当前内容为Head
(完全该内容,而不是Head
的内容已合并内容为master
),master
的祖先中保留两个分支的历史记录。 (因此git checkout master; git reset --hard Head
不是一个选项。)你可以在主人之上修改Head
提交,以VonC suggests为基础,以Head
提交的价格生成线性历史记录-written。
如果你想完全保留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