当我提交更改时,我目前不在任何分支机构。 我没有真正注意到这个消息并检查了另一个分支。
如何检索我的更改? 我无法合并或结帐,因为没有要合并的分支。
答案 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
返回(包括,可选地,将更改保留在工作目录中)。