当不在任何分支时,当前不在任何分支+ git commit + checkout上。我放松了改变吗?

时间:2011-05-18 17:09:15

标签: git commit

当我提交更改时,我目前不在任何分支机构。 我没有真正注意到这个消息并检查了另一个分支。

如何检索我的更改? 我无法合并或结帐,因为没有要合并的分支。

6 个答案:

答案 0 :(得分:68)

您可以使用git reflog获取您在“无分支”(分离的HEAD)中执行的提交的提交哈希值,并将其合并到您当前所在的分支中(主可能)< / p>

git merge HEAD@{1}

这样的东西

您还可以git rebase -i并从reflog中“选择”您想要的提交。

答案 1 :(得分:11)

在做了一些工作之后,我处于类似的状态:

   Lilith:经理KelSolaar $ git status

     

目前不在任何分支上。

我发布了一个 git log 来查看我的上次提交哈希:

  

Lilith:经理KelSolaar $ git log

     

提交49984303037e970d637161c3154b7fd7d6ae3a43   作者:KelSolaar   日期:2011年10月5日星期三22:41:31 +0100

Introduce new "QObject" components category and rename existing ones to "Def

然后我检查了我的主分支:

   Lilith:经理KelSolaar $ git checkout master

     

以前的HEAD位置是4998430 ...引入新的“QObject”组件类别,并将现有的组件重命名为“Default”和“QWidget”。

     

切换到分支'master'

我最后使用提交哈希合并:

  

Lilith:经理KelSolaar $ git merge 49984303037e970d637161

     

更新141bc69..4998430

     

快进

     

src / manager / component.py | 2 + -

     

...

答案 2 :(得分:9)

git checkout -会将您切换回上一个分支:

Thu Feb 21 12:50 AM /src/test ((08f84f4...)) $ git checkout master

Warning: you are leaving 1 commit behind, not connected to
any of your branches:

  08f84f4 Fix everything

Switched to branch 'master'

Thu Feb 21 12:50 AM /src/test (master) $ git checkout -

HEAD is now at 08f84f4... Fix everything

Thu Feb 21 12:50 AM /src/test ((08f84f4...)) $

答案 3 :(得分:2)

你的提交没有消失,你可以通过让git向你显示隐藏的提交来恢复,并将它们放回临时分支。

有关说明,请参阅this answer

答案 4 :(得分:1)

使用“git reflog”它会显示git命令历史记录结果的提交哈希值。 然后你可以“git co hash”,当你找到合适的那个时,设置/为它做一个分支。

答案 5 :(得分:-5)

你永远不会“不在任何一个分支上”。您可能已经在名为master的分支上,但是当您提交时,您在某个分支上。所以提交是在某个地方。

使用git log查看历史记录。您可以使用git reset返回(包括,可选地,将更改保留在工作目录中)。