2014-10-03 26 views
5

我在我的存儲庫中有2個分支。他們中沒有任何未提交的變化。GIT Rebase操作因PC崩潰而中斷。現在存儲庫不可用

我拉了branch1,檢出了branch2,並在branch1上啓動了branch2 rebase。
在工作中,我的電腦崩潰了。

它終於啓動後,我打開GitExtensions發現我的存儲庫是完全空的,我看到閃爍的'rebase under way'或類似的東西,我點擊它,它彈出窗口,我必須選擇修復衝突,這不應該發生。如果我點擊「解決」,它會打開窗口,顯示衝突的文件,當然沒有。

我試圖點擊abort rebase,但它說那個文件夾是not a git repository or any of the parents

從那時起,我可以做任何事情。我無法中止,看不到提交。打開git bash只是告訴我/some/path/to repo/repo name ((...) | REBASE)

當我寫git status它說它不是一個存儲庫。

嗯,我也不會很在乎失敗重訂,但我注意到,我所有的源文件變成二進制文件,這意味着,我的unpushed提交丟失,除非你們能幫助我恢復。

我想重新分支並推動它......這是令人沮喪的。

EDIT 1:

.git目錄是在存儲庫目錄(/some/path/to_repo/repo_name/.git),因爲它應該的。 當分支2提交正在重新應用時,PC崩潰。這意味着branch1提交已經應用到分支2,唯一剩下的就是完成應用分支2提交。並且在應用了10次或20次提交之後崩潰了。

我現在已經比較了克隆回購的git direcotries和墜毀的gg direcotries。

克隆回購了這些文件夾:

信息
日誌
對象
裁判
而這些文件:
配置
描述
HEAD
指數
填充裁判

墜毀的一個有一個名爲rebase-apply一個額外的文件夾,還額外文件:
COMMIT_EDITMSG
FETCH_HEAD
ORIG_HEAD

一切似乎相匹配。我沒有深入文件夾。並沒有試圖比較文件內容。

+1

.git目錄在哪裏?裏面有什麼?回購不應該被破壞,除非git在寫入回購的過程中被中斷(這種情況經常不會發生)。 – nneonneo 2014-10-03 11:52:39

+0

我已添加額外的信息作爲編輯,請檢查出來,並告訴我,如果我需要提供更多。 – user1651105 2014-10-03 12:04:47

+1

一般git說如果'HEAD'不存在。在rebase中間,HEAD會包含一個原始的SHA-1,也許它包含一個被破壞的SHA-1,或者根本沒有?在這種情況下,將有效的「HEAD」放在適當的位置可能會使您接受任何下一步操作。 – torek 2014-10-03 12:49:55

回答

9

檢查.git目錄文件後,我注意到ORIG_HEAD和HEAD文件只包含NULLS。看來我終於想出瞭如何解決這個問題。

  1. 刪除index文件。
  2. 刪除ORIG_HEAD文件。
  3. 刪除HEAD文件。
  4. 製成的FETCH_HEAD副本(它指向一個分支1)
  5. 更名拷貝到HEAD
  6. 開業GIT Bash
  7. 導航到庫目錄。
  8. 然後git status檢查它是否看到該目錄是存儲庫。 (它呢)
  9. git reset命令。
  10. git rebase --abort命令。

此時,所有的二進制源文件都是文本文件。還有index文件被重新創建。

當我通過GitExtensions打開倉庫時,在rebase之前一切似乎都恢復正常。我試圖變基一次,但是它停止在提交中的一個與
error: unable to unpack d447b241eba771f175cb2150eec77ec605a86486 header error: inflateEnd: stream consistency error (no message) fatal: d447b241eba771f175cb2150eec77ec605a86486 is not a valid object

錯誤
  • 我克隆庫(從本地GIT服務器)到另一個文件夾。
  • 將已恢復存儲庫中的源文件複製到新克隆的源文件。
  • 檢查它是否顯示我所做的所有更改都是正確的,並且沒有任何提交丟失。
  • 提交所有更改爲1提交(哦,哦)。
  • 推。
  • 就是這樣。現在它再次工作。似乎我沒有對它造成任何損害。

    +0

    這只是救了我的命。 – 2016-09-01 23:36:19

    +0

    我的評論和Brian一樣! Ufff沒有足夠的+1這個答案 – 2016-09-21 22:11:42

    +0

    你剛剛救了我的命。如果可以的話,我會給你+50。 – JNYRanger 2017-08-16 19:38:50