Git:似乎在“(无分支)”中,然后丢失了我的更改


11

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

然后,做一个“ git branch”,我得到的东西看起来像这样:

git branch
* (no branch)
  master

愚蠢的,我以为我可以重新掌握

git checkout master

现在我的改变似乎已经消失了。我的主分支大约一天。而且似乎没有办法切换回此位置(无分支)。

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

Answers:


13

只要您没有完成git gc,就不会丢失任何东西。您需要做的就是再次找到它:)您会得到什么:

git reflog show

那应该向您显示发生了什么,以及缺少的节点的ID。


2
我会在不指定master的情况下执行git reflog。可能有未绑定到分支的提交,在这种情况下,很可能就是这种情况。您可以将提交检出到新分支中,从而可以找到它的路径。
杰夫·费兰德

您是对的,可能这样更好。我从问题中得出的假设是,提交是在主控上。我已经更新了答案。
CK。

哇,谢谢!我将巨大的存储空间分配给任何分支,然后切换到master以将其合并到...中,而我的参考文献是这样。
帕斯卡

已经有很多年了,但是我也跳入了这一步。我切换回master分支,突然间po。我所有的2天工作时间(即每天8小时)都消失了。非常感谢!
Falgantil 2015年

5

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

$ 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是显示为(无分支)的匿名分支。要恢复到原来的状态,只需执行git checkout即可恢复旧的伪分支。

我建议您在不小心gc之前备份git存储库,只是为了省心。


仅仅检查分支机构对我不起作用。我的更改已在我的功能分支中正确进行。仍然在我的工作区中看不到它们。我一定以其他方式丢失了更改。但是,我可以通过执行恢复更改git reset --hard <commit-id>。提交ID是的第一列中的字母数字代码git reflog。参见effectif.com/git/recovering-lost-git-commits
Torsten 2015年

2
# 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>

在包括rev-list在内的许多方式中,只有fsck帮助找到了无分支的提交。非常感谢你。
temoto 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.