2013-10-30 63 views
3

这prolebme主要是因为我在网吧恶劣的WiFi连接。 我做了我的本地回购了一些变化,eveyr时间我做了一个我会适时推进。 最新的一个我做的互联网连接和关闭,所以才推和git的日志将显示提交,但git的状态显示我的本地和远程之间的差异。Git的,失去了我的变化

自从我上次推是成功的,我想我会做这个

git fetch origin 
git reset --hard origin/master 

但废话,这摆脱了所有的承诺我今天没有和头是现在有些犯我昨天做的,当我去bitbucket看看它没有的回购,甚至不显示今天的变化。

有人请告诉我,我不只是拧自己了吗?有没有解决方案?

+1

让我们清楚:混帐没有丢失所做的更改;你失去了你的改变。 ;) – TheBuzzSaw

+0

@TheBuzzSaw:不需要说教:-)今天我也遇到过同样的事情。尽管我使用了smartgit,但是在我从远程存储库中取出后,突然间我的本地提交消失了。它从未发生过。幸运的是,我发现这个线程,我设法得到提交,并与远程进行合并。 – costa

回答

7

检查git reflog看到提交散列你所有的近期活动。

Git为垃圾收集可达提交至少2周(除非你明确地告诉它)

另外,git log -g可以帮助你:

-g, --walk-reflogs

代替行走提交祖先链,从 步行reflog条目最近一个到旧的。

+0

是的,我只是做了一个git reflog,然后提交就在那里,现在只是让我不要再拧我自己了,我做错了什么?以及我需要提交散列后应运行什么命令。 – Eddie

+0

你可以'git reset --hard'来进行任何提交,而不仅仅是命名分支。你也可以合并“失去”提交哈希 – Gareth

+0

至于你做错了什么,我猜想“我最后一次推动是成功的”可能并不是真的,你错过了某处的错误消息。不幸的是,如果没有看到更多的实际终端会话 – Gareth