1

我需要修复一个Git存储库,它有一个分离的头和2个连续的分支,与不相关的历史记录。我必须在工作中使用SourceTree,但如果需要,我也可以使用命令行。 我必须做的是在不丢失提交之间的情况下,协调当前的[Head](图像上的3)与[origin/master] [origin/head] [master](2)。我还想合并(或重新连接)2个分支(粉红色和蓝色)。 (我只需要1个分支)。我不确定最好如何处理:调和[Head]和[origin/master]或重新连接2个分支。修复Git与独立头和无关历史的分支

Git Repository Image

我不得不隐藏所有名称和注释,因为这是工作和内容,我允许共享限制。对不起,如果这个问题不符合最好的标准,这是我在任何论坛上的第一个问题。

+0

也许[this](https://stackoverflow.com/questions/5772192/how-can-i-reconcile-detached-head-with-master-origin)将帮你? – ckruczek

+0

谢谢你的快速回答。我只是修复了分离的头部,就像检查主分支一样简单。现在我所要做的就是将新分支(“初始提交”评论)与实际包含代码的分支合并。 – Narkael

回答

0

一旦创建于HEAD一个分支标签,那么你将是免费签其他分支,而不会丢失任何您提交的历史(Ofcourse后,你仍然可以检索提交的历史前提是你知道的SHA-ID的,但是这是难以跟踪的)

所以第一件事首先,建立在您的HEAD是一个本地分支

的Git分支发展

(开发一些分行的名称,你可以给任何其他名称,如你所愿)

现在,如果你看到你的源代码树,你也可以看到HEAD和开发(或者你在上面的git给任何名称命令)。您现在可以自由结账master分行。

git的结帐主

一旦你这样做,你的HEAD现在将在master。请记住:HEAD会告诉您当前代码位于哪个快照(或哪个提交)中。

接下来,如果你想在master(你刚创建分支)您develop分支的提交以及,所有你需要做的是合并

假设你在主分支(如果你不是,那么结账主)

混帐合并开发

(这使开发分公司在本地主提交)

混帐推起源主

(这推动这些变化对远程/主)

提示:而不是合并,有一个更好的选择变基可用饭桶。但我认为你是git的新手,所以最好能通过一些在线材料并研究它来理解合并和rebase之间的区别。 (或者你可以让你的同事向你解释)

+0

谢谢你的回答。我只是解决了头部问题,并意识到这样做是因为我认为自从头部脱离后已经犯下了错误。我现在只需要找到合并当前主分支和另一个分支的方法。问题是他们有不相关的历史,所以git不会让我合并它们。 – Narkael

+0

我已经进一步编辑了我的回复。你可以随时合并两个分支(尽管他们有任何历史)。但是,是的,如果两个不同分支正在修改相同的文件,则可能需要修复冲突。 – Lokesh

+1

我通过与--allow-unrelated-history选项合并解决了我的问题。我现在有一个主分支,没有独立的头。一切都如我所愿!谢谢! – Narkael