2012-10-21 34 views
3

Github for Windows只是在我嘗試進行提交時被轟炸,現在git(命令行)告訴我每個文件都是新的。我仍然有一個53MB大小的.get文件夾。在此之前我已經做過60到100次提交。如何在Github for Windows崩潰後恢復回購?

如何在不丟失任何歷史記錄或更改的情況下恢復我的工作副本?

Git的狀態說:

分支主

初始提交

變更,必須承諾:
(使用 「混帳RM --cached ......」 到unstage)

新文件:.gitattributes
新文件:.gitignore
...(1620多個文件)

變化不連續上演承諾:
(使用 「混帳添加...」 更新的內容將被提交)
(使用 「git的結帳 - ...」丟棄在工作目錄的變化)

修改:源/富/酒吧/ Index.cshtml

未跟蹤文件:
(使用「混帳添加...」在什麼將致力於包括)

Posh Git命令提示符如下:

C:\ Projects \ Foo [master +1623〜0 -0 | 0〜1-0]>

git log的輸出是如下

C:\項目\富[主1623〜0 -0 | !+1〜1-0]> git的日誌
致命的:壞默認的修訂版 'HEAD'

UPDATE

我只是跑 「驗證數據庫」,從Git的圖形用戶界面,並將其與回來以下內容:

樹上晃來晃去晃來晃去4b825dc642cb6eb9a060e54bf8d69288fbee4904提交 30855e0deee8600f10733e6760db54fee2570a38懸掛承諾 cd8bc69ad56ca5c4d51d0d5028525698158cf3ec懸掛提交 c934f9823d907cd69c5e08a0159b9de4dfe3da35懸掛承諾 f958caca247978db978b70460276b5da7582bb06通知:HEAD指向一個 未出生的分支(主)的通知:無默認引用

+0

如果沒有更具體的診斷信息,很難分辨出這裏提出的問題。你也許應該包括一些git status的輸出,以及你以前會在這裏得到什麼。同時我會投票結束。 – pmr

回答

2

好吧,首先,我複製了我的工作副本,所以我總是有一個備用位置。接下來我運行了git fsck,它給出了以下輸出。

> dangling tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 dangling commit 
> 30855e0deee8600f10733e6760db54fee2570a38 dangling commit 
> cd8bc69ad56ca5c4d51d0d5028525698158cf3ec dangling commit 
> c934f9823d907cd69c5e08a0159b9de4dfe3da35 dangling commit 
> f958caca247978db978b70460276b5da7582bb06 notice: HEAD points to an 
> unborn branch (master) notice: No default references 

從這裏,我用

git checkout <some-hash> 

通過晃來晃去的散列工作上面提交。原來,最後一次懸掛提交是我最近的提交,所以git checkout c934f9823d907cd69c5e08a0159b9de4dfe3da35在崩潰前讓我回到了我的工作副本。

從這裏我做了git checkout -b master,在此提交中重新創建了我的主分支。 git status現在顯示了一個更改,這是我嘗試創建的提交。承諾讓我回到正軌。

+1

太棒了! :) – nulltoken

+0

+1。那裏!這並不難。是嗎? :) –

+0

@NoufalIbrahim不,但在第一個可怕的 –

1

首先:不要驚慌。備份您的項目,包括您的工作文件夾。嗯...其實,讓他們的 :)

我還有一個git的文件夾,其大小爲53MB。

Git是一個非常有彈性的工具。對象數據庫的分析可以「重建」你的歷史。

Moreovoer,GHfW記錄了大部分與回購交易。長話短說,GHfW團隊可能會幫助你挽救你的回購。

如前所述由announcement blog post

我們務必閱讀每提的Twitter。如果您發現錯誤,請將其提交至[email protected]。每個電子郵件都由真人閱讀。

給他們發一封郵件。像現在

+0

如何建議您「分析對象數據庫」? –

+0

這是一個自己的問題......而且相當複雜;)有不同種類的對象(Commit,Trees,Blobs和Tags)。每個對象都以.git/objects結構存儲(打包格式或鬆散格式)。樹列出了其「子」(Blob,其他樹或提交(子模塊))。一個提交指向一棵樹和它的父提交列表。帶註釋的標籤可以指向其他三個對象中的任何一個。考慮到這一點,人們應該能夠重建對象之間的關係。 .git/refs的內容將最終幫助您識別「書籤」對象(標題和標籤)。 – nulltoken