2011-08-08 141 views
0

我有一个严重的问题发生在我的git仓库。我以前有2个分支,我昨天晚上写了代码,忘了推送到github。今天早上我使用了另一台机器,并试图分叉一个新的分支并推送它们(代码存储在Dropbox中,因此我使用哪台机器并不重要),然后git给了我错误说:“权限被拒绝”。然后我意识到我没有使用我的labtop,所以我打开了我的labtop并试图进入我刚刚创建的分支。但是,似乎我不能那样做,更糟糕的是,我在另一台机器上犯下的所有代码都已经没有了!我用git branch看到分支上市,现在是这样的:混帐分支

centeredForm (shang's conflicted copy 2011-08-08) 
* centeredform 
    master 
    refinement 

其中第一个“centeredForm”是我在另一台机器上创建的分支,而“centeredform”是我在我的labtop创建之后的分支。我的代码没有了吗?还是有办法恢复到以前的状态?

+0

您是否尝试过切换到居中窗体分支(我假设您昨天的工作是)? git checkout centeredForm – richardolsson

+0

有线的事情是分支“centeredForm”似乎在那里,但是当我尝试切换到它时,git说:“错误:pathspec'centeredForm'与git已知的任何文件都不匹配。 “ –

回答

5

如果是提交,那么它不会丢失。总是有历史:

git reflog 

然后你就可以抓住你的SHA最后一次提交,并撤消任何混乱:

git reset --hard <SHA> 

重要:备份everyhing第一。 reset --hard将删除所有未提交的更改。

0

要查看提交是否仍然存在,并且dropbox没有“放错位置”。使用git rev-parse branchYouLost。这将查找该分支的提交。

比做git cat-file -t SHA_above_command_gave_you

从你的错误消息我假设这会告诉你,这是一个无效的对象的样子。在这种情况下,Dropbox似乎失去了你的分支的一角。

尝试找到一些丢失的提交的另一个选择是使用git reflog并尝试查看其中是否包含您想要的提交。您可以使用git cat-file -p [email protected]{n}获取日志消息,并查看它是否是您错过的日志消息。