git branch搞砸了

时间:2011-08-08 15:58:01

标签: git branch

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

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

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

2 个答案:

答案 0 :(得分:6)

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

git reflog

然后你可以获取上次提交的SHA,并撤消任何混乱:

git reset --hard <SHA>

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

答案 1 :(得分:0)

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

git cat-file -t SHA_above_command_gave_you

从您的错误消息的外观我假设这将告诉您这是一个无效的对象。在这种情况下,dropbox似乎丢失了你的分支。

尝试查找丢失提交的另一个选项是使用git reflog并尝试查看其中一个是否包含您想要的提交。您可以使用git cat-file -p HEAD@{n}获取日志消息,看看它是否是您丢失的消息。