2011-08-08 135 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}獲取日誌消息,並查看它是否是您錯過的日誌消息。