記git stash誤刪除後的一次恢復

2021-08-10 20:30:17 字數 2112 閱讀 1935

我想把來龍去脈都好好理理。事情是這樣的:

今天更改了一些檔案,現在臨時需要修乙個其他分支的bug。臨走前看了一眼自己今天的工作量。

嗯現在新建分支去修bug

萬惡的起源在這裡。。。

在今天的工作量中我新建了幾個檔案並且移動了幾個檔案,未add的檔案不阻止切換分支,並且在所有分支上都顯示為未跟蹤

我基於以前都是用gitignore和git add .這兩個命令來進行檔案跟蹤,所以下意識的直接來了一句這個。。。。

這下麻煩了。。。所以要把它們從剛剛的add中刪了,

為在暫存庫里刪除而不是直接刪除檔案git rm 要加–cached引數

這兩句命令完成了上面的任務

好吧,既然這樣,我就想著回到我正在工作的分支上把它們add進去吧。

其實這一步執行了也不要慌,git提示了dropped的引用,此時只需要git merge 3658c5e2f1bbf67b2ec70bdfe0b3a067e50bdadd就可以恢復了

然而我當時接著又慌了,慌亂之中又執行了一次傻傻的命令:

我當時並沒有直接去查命令列

於是就去網上搜,有乙個確實行之有效的部落格:

這個部落格提出的方法確實可以使用

原理就是

1、使用git的fsck功能引數用–lost-found(呃今天就就懂了這乙個)

git fsck –lost-found

這個命令的功能是找出「懸空的提交」。

git中把commit刪了後,並不是真正的刪除,而是變成了懸空物件(dangling commit)。我們只要把把這懸空物件(dangling commit)找出來

用git rebase也好,用git merge也行就能把它們給恢復。

這裡最重要的乙個命令就是:git fsck –lost-found

(參考自

而剛剛執行的git stash drop其實就是產生了個懸空物件。只需想辦法把他弄回來就好

2、上面也提了使用git merge合併這個懸空物件。當然如果直接知道引用的話,把drop的引用merge回來就行了。而第一篇文章案例與我的區別就是,我能找到引用,而那位同志沒找到。所以他只能通過git fsck –lost-found來查詢引用並且恢復。這個命令還是挺坑,我當時也不知道,跟著這篇文章也去翻了一下,一通亂找還卻第二個引用沒找到。。。後來回去好好看看我幹了些啥事才弄清楚情況。

現在**已經恢復完成~~下來就要去切分支改bug了。並且,在這之前還要提醒自己:恢復stash不是drop是pop。我還有乙個想法,剛剛我drop了兩次,所以merge了兩次,我想把**留著,這兩個提交乾掉,這也是我接下來的工作。

感覺今晚收穫挺大,對git又有了進一步了解。所以寫出來與大家共享。

我隨便一搜就把接下來的工作幹完了。。。

就是使用git reset –mixed 加上commit的碼。只是在版本庫中回退,而不更改當前**,也就是說你開啟檔案後還是現在的樣子,但版本庫認為你已經回到了老版本,並且做了很多改動到現在的樣子。hard就是回退時把當前檔案系統中的**也給回退了也就是說你開啟檔案後會變成那次提交時的樣子。

soft我一時半會沒搞清楚。先留著吧,目前是夠用了。

1、用git誤刪了不要慌,即使是stash這種保護機制最低的特性,也是有辦法恢復的。

2、恢復方法就是回去看你drop的索引,用git merge合併就行了

3、別把drop當成pop。

mysql誤刪 mysql資料庫誤刪除後怎麼辦?

在日常運維工作中,對於資料庫的備份是至關重要的!資料庫對於 的重要性使得我們對 mysql 資料庫的管理不容有失!然而是人總難免會犯錯誤,說不定哪天大腦短路了,誤操作把資料庫給刪除了,怎麼辦?下面,就 mysql 資料庫誤刪除後的恢復方案進行說明。一 工作場景 mysql資料庫每晚12 00自動完全...

記一次誤刪 git stash 檔案恢復操作

在使用 git 的時候我們都可能會遇到 誤刪的情況的,筆者就遇到了誤刪 stash 中的 在這裡記錄一下如何找回誤操作的 git stash 的 在進行多分支管理 時,我們經常需要在沒完成功能的開發時就需要緊急切換到master 分支進行 hotfix。而我們後不想將未完成的 進行提交,因此就需要進...

找回誤刪除的檔案

author skate time 2009 11 19 今天在網上幫個美女恢復資料,他昨天不小心,把重要檔案刪除,而今天又急用 於是我就幫個小忙 用兩款資料維護軟體diskgenius,easyrecovery幫其恢復,這兩個軟體結合使用,簡直帥呆了,在日常生 活中遇到的幾乎都可以處理,尤其是那些...