修复 Git 带有分离头和不相关历史的分支

Fix Git Branching with Detached Head and Unrelated Histories

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

Git Repository Image

我不得不隐藏所有姓名和评论,因为这是为了工作,允许我分享的内容受到限制。抱歉,如果这个问题不符合最佳标准,这是我在任何论坛上的第一个问题。

一旦你在 HEAD 创建了一个分支标签,你就可以自由地签出其他分支而不会丢失任何你的提交历史(当然,如果你知道 SHA- ID,但这很难跟踪)

首先,在您的 HEAD

所在的位置创建一个本地分支

git branch develop

(develop是某个分支的名字,你可以随意取其他名字)

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

git checkout master

完成后,您的 HEAD 现在将在 master。请记住:HEAD 告诉您当前代码在哪个快照(或哪个提交)中。

接下来,如果你想在 master 中获得你的 develop 分支(你刚刚在上面创建的分支)的提交,你需要做的就是 合并

假设你在 master 分支(如果你不在,那么检查 master)

git merge develop

(这会在本地 master 中带来 develop 分支提交)

git push origin master

(这会将这些更改推送到 remote/master)

提示:merge 中有更好的选择 rebase =54=]。但我假设你是 git 的新手,所以你最好先上网浏览一下 material 并研究一下,以了解 merge 和 rebase 之间的区别。 (或者你可以请同行给你解释一下)