章節導航
如何用git回覆誤刪的部落格文章?
Elon Woo2 分鐘閱讀
核心精華與要旨 (TL;DR)
在不破壞其他改動的前提下,把 `src/blog` 恢復到指定提交後的正確狀態,並可安全提交。
0. 先判斷是否真的刪了
第一步不要急著回滾,先確認刪除範圍:
git status -sb
如果看到類似 D src/blog/post-1.md,說明是工作區刪除;如果遠端也沒了,再走後面的“恢復 + 提交 + 推送”。
1. 找到恢復基準提交
只看部落格目錄歷史,避免被其他檔案干擾:
git log --oneline -- src/blog
再對可疑提交做一次檔案級確認:
git show --name-status --oneline <commit>
這一步的標準是:找到“文章還在、內容正確”的那個提交(比如你提供的 91e90b... 及其後續目標版本)。
2. 按目錄精準恢復(核心)
恢復命令:
git restore --source <good_commit> -- src/blog
這條命令隻影響 src/blog,不會改動其他目錄,比 reset --hard 安全得多,適合線上正在開發中的倉庫。
3. 恢復後做三層驗證
先看檔案是否回來了:
Get-ChildItem src/blog
git status --short -- src/blog
再看內容構建是否正常:
npm run build
如果構建出現 Duplicate id "post-x",通常是兩個目錄裡有同名 slug,需要統一文章來源(例如只保留 src/blog)。
4. 提交併推送恢復結果
確認無誤後單獨提交,便於追蹤:
git add src/blog
git commit -m "fix(blog): restore deleted posts"
git push origin main
5. 常見坑
- 不要用
git reset --hard直接回退整庫,容易誤傷其他改動。 - 不要只恢復單個檔案後就結束,先跑構建,確認路由和內容索引沒問題。
- 不確定提交時,優先
git log -- src/blog和git show <commit> -- src/blog,再恢復。
6. 一套可複用的最短流程
git status -sb
git log --oneline -- src/blog
git restore --source <good_commit> -- src/blog
npm run build
git add src/blog
git commit -m "fix(blog): restore deleted posts"
git push origin main
這套流程的核心原則是:範圍小、可驗證、可回溯。
宸極
宸極 先生
專精於太乙神數與高階術數之學。致力於以條理化與邏輯化的學術視角,為高階人士與企業主提供天時大運與局勢研判。