2013-02-13 52 views
2

昨天晚上我完成了一天的工作,去了github并提交,然后点击同步按钮。我在屏幕上短暂地看到了一条消息,说明需要解决合并冲突,但是在我完全阅读它之前,这条消息被自我解散了。Github吃了我的源代码(我的提交消失了)

我杰出的提交消失了,所以我觉得一切都很好。今天早上我再次开始工作,所有我做的新代码已经从前两天恢复到之前的提交。没有提到我做过的任何改变,也没有提到我在完成工作日之前所做的承诺......他们刚刚离开。

有关恢复的任何建议?

UPDATE

对于它的价值,我在浏览日志文件在我的git的文件夹中,我看到我的承诺:

37c661799950211c713630301cf8cbe609de6c59 f94366329fa93cec529b83b34a607449725f5270 [user info removed] 1360710557 -0700 commit: Shout page 
f94366329fa93cec529b83b34a607449725f5270 b588ed19e77ef55611a4a82896c5ef2c26f3e4cd [user info removed] 1360710567 -0700 checkout: moving from master to  b588ed19e77ef55611a4a82896c5ef2c26f3e4cd^0 
b588ed19e77ef55611a4a82896c5ef2c26f3e4cd b588ed19e77ef55611a4a82896c5ef2c26f3e4cd [user info removed] 1360710576 -0700 rebase finished: returning to refs/heads/master 
+0

gitk显示远程中央回购处于启用状态和您本地回购指向的位置之间的区别? – uchamp 2013-02-13 19:01:03

回答

3

尝试使用git reflog来查找丢失提交的哈希。然后,您可以使用git cherry-pick,git mergegit reset --hard(取决于您想要对丢失的历史进行什么操作)来恢复。如果您需要查看差异以确定您的提交,请使用git reflog -p

0

你可能没有一个地方犯第一,不您?首先检查你的本地分支:你做

git log --oneline 

不知道是什么,但如果有一个合并冲突而推,你仍然应该有你的本地更改。

+0

这是使用github用户界面的mac。我做了提交本地,然后推它(使用同步按钮)。 git log显示最后一次提交是我恢复的那个(即,在那里没有提到我的) – bugfixr 2013-02-13 14:12:46

+0

所以打开github shell并检查上面的命令返回的结果。之后,我可以扩展我的答案,帮助您恢复变更。如果您有本地提交,推送失败不会导致数据丢失! – Sebi 2013-02-13 14:13:55

+0

不知道github shell在哪里;但我已经安装了正常的git命令行工具。我去我的本地回购,做了git log命令,最近的提交显示是两天前(不是昨天我提交的那个) – bugfixr 2013-02-13 14:19:42