目前不在任何分支+ git提交+结帐不在任何分支。 我有没有放松我的改变?

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

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

你可以使用git reflog来获得你在“no branch”(一个分离的HEAD)中所做的提交的提交散列,并将它合并到你当前所在的分支(master也许)

git merge HEAD@{1}

你也可以git rebase -i并从reflog中“挑选”你想要的提交。

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

Lilith:经理KelSolaar $ git状态

目前不在任何分支上。

我发布了一个git日志来查看我的最后一个提交哈希:

Lilith:经理KelSolaar $ git log

提交49984303037e970d637161c3154b7fd7d6ae3a43作者:KelSolaardate:Wed Oct 5 22:41:31 2011 +0100

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

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

Lilith:经理KelSolaar $ git checkout master

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

切换到分支“主”

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

Lilith:经理KelSolaar $ git merge 49984303037e970d637161

更新141bc69..4998430

快进

src / manager / component.py | 2 + –

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...)) $ 

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

请参阅此答案的说明。

使用“git reflog”,它显示了你的git命令历史结果的提交哈希。 然后你可以“git co hash”,当你find正确的,设置/为它做一个分支。

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

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