2012-08-27 123 views
1

我有一个git仓库。 当我做“git的分支”,它说我怎样才能回到我原来的git分支

$ git branch 
* com-2.1-SS 

,然后我做“git的日志”,让我的名单提交

$ git log 
commit ff878926b78614e8bf6af161da06070618e9ff6b 

commit 3ffda8cec60a74a718fb25fb7a9fe4b3c4381137 

commit bf6bb3427d8031d8e172c3b8b7909c8580e929cd 

所以我想我的仓库检查出3ffda8cec。所以我做了'git checkout 3ffda8cec'。

到目前为止这么好。它工作,我得到我想要的。

但我的问题是我怎么能回到com-2.1-SS? 即扭转的事实,我 'git的结帐3ffda8cec'

当我做 'git的分支',它说

$ git branch 
* (no branch) 

当我做“git的结帐git的结帐COM-2.1-SS

error: pathspec 'com-2.1-SS' did not match any file(s) known to git. 
+0

您可以仔细检查您的输出。你原来的分支输出表示你只有一个分支('com-2.1-SS'),但你的第二个git输出表明你根本没有分支,但是你所说的你所做的一切应该已经消灭了你的分支。应该工作的命令是'git checkout com-2.1-SS',而不是'git checkout git checkout com-2.1-SS1'。 –

+2

正如@CharlesBailey所说,似乎在你对'git branch'的两次调用之间,你删除了名为'com-2.1-SS'的分支(如果你只使用了git命令,那么你可能已经使用了'git branch -D com- 1.2-ss')这是你的错误最明智的解释。 –

回答

2

git reflog将向您显示分支提示的不同值,您可以检出它返回到以前的状态。

你的情况是比较容易,因为你还是现在知道的com-2.1-SSgit checkout前SHA1是ff878926b78614e8bf6af161da06070618e9ff6b(这基本上是什么git reflog做),这样就可以直接做:

git checkout ff878926b78614e8bf6af161da06070618e9ff6b 

Althoug我不明白从您的分支中删除您的分支,您可以在结帐后重新创建分支:

git checkout -b com-2.1-SS 
+0

不是你的答案是错误的,但AFAICT OP在这里只是在不移除'com-2.1-SS'(无头模式)的情况下检出'3ffda8cec'并且似乎无法再次检查'com-2.1-SS'。我不确定reflog是否有助于解决任何问题。但最后,做一个'git checkout -B com-2.1-SS ff878926b'确实可以解决这个问题。 –

+0

我没有选择分支。我不明白为什么在我退房至SHA之后“消失”了。 – michael