F
章節導航

如何用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/bloggit 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

這套流程的核心原則是:範圍小、可驗證、可回溯。

宸極
宸極 先生

專精於太乙神數與高階術數之學。致力於以條理化與邏輯化的學術視角,為高階人士與企業主提供天時大運與局勢研判。