Git:似乎在“(没有分支)”,然后失去了我的变化

我试图从我的Git工作区推到Github,但我添加和提交的更改似乎没有上传。

然后,做一个“git分支”,我得到了这样的东西:

git branch * (no branch) master 

愚蠢的是,我想我可以回到主人身边

 git checkout master 

现在我的变化似乎已经消失了。 我的主分支大约一天。 似乎没有办法切换回(没有分支)。

我的变化丢失了吗? 还是有办法恢复它们?

只要你没有做过git gc ,那么你还没有失去任何东西。 所有你需要做的是再次find它:)你得到什么:

 git reflog show 

这应该告诉你发生了什么事,以及缺less的节点的ID。

以上答案是正确的。 这就是我所做的:

 $ git reflog 5b35f6d HEAD@{1}: pull github master: Fast forward ca92d15 HEAD@{2}: checkout: moving from 759dab1b15731ce7680c26839ca470d20e709e36 to master 759dab1 HEAD@{3}: commit (merge): Merge branch 'master' of github.com:gonzojive/IODB-ui into HEAD 065e269 HEAD@{4}: commit: added fieldsets to snazzy form f357606 HEAD@{5}: commit: preliminary support for google maps. ca92d15 HEAD@{6}: checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0 $ git checkout ca92d15d272867b63d54f96d4aa57f8ecc479cd0 

“哦,不! 时刻是这样的:

 checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0 

ca92d15d272867b63d54f96d4aa57f8ecc479cd0是显示为(不分支)的匿名分支。 为了回到它,只要做一个混帐签出,你的旧pseudobranch恢复。

我build议备份你的git存储库,然后不小心把它弄掉,只是为了安心。

 # if you have already checked out to master, # you won't know the commit-ish of your "no branch": git fsck --lost-found # (to find your <commit-ish>) git merge <commit-ish> # if you are still on your "no branch" commit: git log # (the commit-ish will be on the first line) git checkout master git merge <commit-ish> # or git log | head -n 1 | cut -d ' ' -f 2 | pbcopy git checkout master git merge <commit-ish>