当前不在任何分支上+ git commit +在不在任何分支中时签出。我有没有放弃我的改变?
当我提交我的更改时,我当时并不在任何分支上。 我没有真正注意到这个消息,并检出了另一个分支。当前不在任何分支上+ git commit +在不在任何分支中时签出。我有没有放弃我的改变?
如何检索我的更改? 我无法合并或结帐,因为没有合并分支。
您可以使用git reflog
得到承诺的承诺,你做了,而在“无分支”(一个分离的头)和合并,在到您目前在(主也许)
分支哈希类似于git merge [email protected]{1}
您也可以git rebase -i
并从reflog中“挑选”您想要的提交。
git樱桃选择{哈希}也似乎工作 – 2013-08-14 20:32:51
您的提交没有消失,您可以通过让git向您显示隐藏的提交并将它们放回临时分支来恢复。
有关说明,请参见this answer。
这比在这种情况下更容易,因为reflog将具有提交 - [manojlds的答案](http://stackoverflow.com/questions/6048425/not-currently-on-any-branch-git-commit-checkout- when-not-in-any-branch-did-i/6048609#6048609)描述了这一点。 – 2011-05-18 18:42:12
Upvoted他尊重 – CharlesB 2011-05-18 18:45:37
你永远不会“不在任何分支上”。您可能已经在名为master
的分支上,但是当您提交时,您在分支上。所以那个提交是SOMEWHERE。
使用git log
来查看历史记录。您可以使用git reset
及时返回(包括(可选)将更改保留在工作目录中)。
这是错误的 - 你*不能*在分支上。这种状态称为“分离HEAD”,因为“HEAD”指向特定提交的散列而不是分支名称。您使用分离的HEAD进行的任何提交都不会推进分支提示,但仍可通过reflog访问一段时间。 – 2011-05-18 18:37:37
不正确。现在“$ git status”给了我“#目前没有任何分支。” (而不是通常的“#分支大师”),然后是“#要承诺的变化:”等。 – weronika 2012-01-21 00:50:56
使用“git reflog”它显示了你的git命令历史结果的提交哈希。 然后你可以“git co hash”,当你找到合适的人时,为它设置/创建一个分支。
我是在一个类似的状态犯了一些工作后:
莉莉丝:经理KelSolaar $ git的状态
目前没有任何分支。
我发出了混帐登录看到我最后一次提交的哈希:
莉莉丝:经理KelSolaar $ git的日志
提交49984303037e970d637161c3154b7fd7d6ae3a43 作者:KelSolaar 日期:星期三22年10月5日:41:31 2011 +0100
Introduce new "QObject" components category and rename existing ones to "Def
然后我检查了我的主分支:
莉莉丝:经理KelSolaar $ git的结帐主
上一页头位是4998430 ......引入了新的“QObject的”组件categorie,并重新命名exising的人来“默认“和”QWidget“。
切换到分支 '主人'
我使用哈希提交最后合并:
莉莉丝:经理KelSolaar $ git的合并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 branch'来检查你当前的分支。 – 2014-06-18 16:50:38
这可以用最简单的解决方案来回答问题。 'git checkout -'(只是为了再次突出显示) – N8TRO 2015-05-20 15:19:00
你还有从您提交的控制台输出?它是否包含提交的SHA1?如果是这样,你有提交对象,这就是你所需要的一切 – rlc 2011-05-18 17:12:47
我......不知道你可以*不*在分支中...... – 2011-05-18 17:13:00
@Ignacio不在分支上的最常见情况是当你签出一个不属于分支的提交 – CharlesB 2011-05-18 17:19:58