用分离头和无关历史修复Git分支

时间:2017-07-05 12:04:50

标签: git github atlassian-sourcetree branching-and-merging git-detached-head

我需要修复一个Git存储库,该存储库具有一个独立的头部和两个连续的分支以及不相关的历史记录。我必须在工作中使用SourceTree,但如果需要我也可以使用命令行。 我要做的是将当前[Head](图像上的3)与[origin / master] [origin / head] [master](2)进行协调,而不会丢失其间的提交。我还想合并(或重新附加)2个分支(粉色和蓝色)。 (我只想要一个分支)。我不确定以哪种顺序进行最佳处理:协调[Head]和[origin / master]或重新连接2个分支。

Git Repository Image

我必须隐藏所有的名称和评论,因为这是为了工作,我允许共享的内容受到限制。对不起,如果这个问题达不到最佳标准,这是我在任何论坛上的第一个问题。

1 个答案:

答案 0 :(得分:0)

HEAD创建分支标签后,您可以自由查看其他分支而不会丢失任何提交历史记录(当然,如果您知道SHA-ID,您仍然可以检索提交历史记录,但这很难跟踪)

首先,首先在HEAD

的位置创建一个本地分支
  

git branch develop

(开发是一些分支名称,您可以根据需要提供任何其他名称)

现在,如果您看到源代码树,您将看到HEAD和develop(或者您在上面的git命令中给出的任何名称)。您现在可以自由结帐master分支。

  

git checkout master

一旦你这样做,你的HEAD现在将在master。请记住:HEAD告诉您当前代码所在的快照(或提交内容)。

接下来,如果您想在develop中获取master分支(您刚才创建的分支)的提交,那么您需要做的就是合并

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

  

git merge develop

(这会在本地主人中提供开发分支提交)

  

git push origin master

(这会将这些更改推送到远程/主控)

提示:而不是合并,git中有更好的选项 rebase 。但我认为你是git的新手,所以你最好通过一些在线资料并研究它来理解merge和rebase之间的区别。 (或者你可以请你的同行解释你)