2016-04-25 276 views
1

我在一天前在我的倉庫中開始了一個git rebase,並且從未完成它。我忘記了,並且在我仍然處於rebase時進行了很多修改。今天我不小心做了一個git rebase --abort沒有把這些修改提交。現在看起來我所有的修改都沒有了。有什麼方法可以恢復它們嗎?git rebase恢復後--abort

git reflog看起來是這樣的:

57d731c [email protected]{0}: rebase: aborting 
d2d3738 [email protected]{1}: rebase -i (start): checkout david 
57d731c [email protected]{2}: commit: My commit message 
+0

看看'git reflog',看看你是否可以找到你編輯的提交:) – knittl

+0

所以你建議如果我簽出'd2d3738'它會恢復我在rebase期間做的無限制的修改? – Danvil

+0

使用'git show'或'git log -p'(或'gitk')檢查提交的問題。如果你沒有做出改變,機會很渺茫。我不認爲Git會在放棄rebase時自動存儲它們。值得一試可能還會檢查可能包含丟失文件版本的懸空斑點和樹木。 – knittl

回答

2

如果你沒有犯底墊在這些修改,它們不幸將付諸東流。

+0

我想補充一點,git在您提交時僅對您的數據承擔全部責任。 不幸的是,你已經失去了工作,但這裏有一個教訓值得:在未來嘗試經常去避免這種情況。乾杯! – MBlanc

3

如果您有新增內容,即使您沒有提交,也只能恢復。 但是,如果您甚至沒有將更改添加到暫存中,除非您使用IDE並且IDE具有更改的本地歷史記錄,否則無法恢復這些更改。

git開始跟蹤文件,一旦他們在舞臺區域,而不是他們未跟蹤。

本地歷史存在於所有的專業IDE中。

+1

贏得本地IDE歷史! – dwenaus

+0

我放棄了舊的rebase之前,我進行了更改,但仍然無法恢復它們。 –

1

最好使用git stash之前git rebasegit stash pop可以很容易地把你帶到你身邊。