我试图从我的 Git 工作区推送到 Github,但我添加和提交的更改似乎没有上传。
然后,做一个“git branch”,我得到了这样的东西:
git branch
* (no branch)
master
Run Code Online (Sandbox Code Playgroud)
愚蠢的,我以为我可以回到主人
git checkout master
Run Code Online (Sandbox Code Playgroud)
现在我的变化似乎已经消失了。我的主分支大约有一天大了。而且似乎没有办法切换回这个(没有分支)。
我的更改丢失了吗?或者有没有办法恢复它们?
CK.*_*CK. 14
只要你没有做过git gc
,那么你就没有失去任何东西。您需要做的就是再次找到它:) 您会得到什么:
git reflog show
Run Code Online (Sandbox Code Playgroud)
这应该会告诉你发生了什么,以及丢失节点的 id。
小智 6
上面的答案是正确的。这就是我所做的:
$ 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
Run Code Online (Sandbox Code Playgroud)
“哦不!” 时刻是这样的:
checkout: moving from master to ca92d15d272867b63d54f96d4aa57f8ecc479cd0
Run Code Online (Sandbox Code Playgroud)
ca92d15d272867b63d54f96d4aa57f8ecc479cd0 是匿名分支,显示为(无分支)。要回到它,只需执行 git checkout 即可恢复旧的伪分支。
我建议您在意外 gc 之前备份您的 git 存储库,只是为了让您安心。