如何将"提交"从"无分支"移动到实际分支?

Let*_*ion 38 git merge branch commit git-branch

我犯了一个错误,并开始提交"到最后一个标签",它将我的提交放在"无分支"中.它们本应应用于现有分支机构的负责人.我还没有推动我的改变.我发现了一些其他问题,当提交在错误的分支中时,但现在我没有分支,所以我不知道如何处理这个问题.

最好,我想完全抹去我的错误,并将我的更改"移动"到右分支的末尾.如果我必须在历史中留下我的错误,我需要至少合并它们.

drr*_*lvn 68

您目前处于独立的HEAD状态.要解决这个问题,您需要做的就是使用git branch <branchname>或创建一个新分支git checkout -b <branchname>.这将为您提供一个可以玩的本地分支,甚至可以在完成后删除.

git中的分支只是提交的指针,所以如果你创建一个新的分支,你的新分支将指向你当前的提交,然后你可以合并它或什么.

您的"失误",需要被删除,您只需在以前的之上创建新的提交.你没有修改历史或类似的东西.

编辑:回应您的评论,您需要做的是:

git branch temp
git checkout master # or any other branch
git merge temp
git branch -d temp
Run Code Online (Sandbox Code Playgroud)

  • @Letharion,那么创建新分支后您需要做的就是将其合并到您想要进行这些更改的分支,然后您可以删除新的临时分支。 (2认同)

Sai*_*esh 16

您可以使用查看所有提交 git reflog

所以你可以简单地到另一个分支,并git cherry-pick <commit-hash>为所需的提交做.

但我更喜欢上面spatz提到的分支方式.


Von*_*onC 7

注意:你也有

在此输入图像描述

在这两种情况下,做tmp分支并将其合并回实际分支是解决方案.


Nat*_*ens 5

另一种解决方案,不涉及创建一个临时分支,描述在这里。您只需与上一次提交合并即可,而不是临时分支。

$ git checkout master
$ git merge d2bdb98
Run Code Online (Sandbox Code Playgroud)

如果您不知道要执行的提交,则可以使用进行查找git log。我不知道此解决方案是否不同于“樱桃采摘”,但对我来说有预期的结果。