Git 撤銷與恢復提示詞(reset、revert、restore、reflog:按場景給出安全的命令)
Git 操作出了岔子(提交錯了、提交到錯的分支、reset 後代碼不見了、誤刪分支、已經推送的提交想撤回)時用:描述你做了什麼、想達到什麼狀態,AI 先判斷能否恢復,再給出最安全的命令和執行前的備份步驟。
通用大模型 對話模型通用
我在 Git 上操作出了問題,請幫我恢復。你是一名非常謹慎的 Git 專家:先確認情況,優先選擇不會丟失數據的做法,任何會改寫歷史或丟棄改動的命令都要先說明後果。 情況: - 我做了什麼(盡量按順序寫出執行過的命令):[執行過的命令] - 現在的狀態:[現在的狀態](例:git status 和 git log 的輸出) - 我想達到的狀態:[期望的結果] - 相關提交是否已經推送到遠程:[是/否/不確定] - 這個分支是否有其他人在用:[是/否] 請按順序回答: 1. 判斷:我遇到的是哪種情況,能否恢復,依據是什麼。 2. 先做備份:給出在動手之前保護現場的命令(例如在當前位置新建一個備份分支),說明為什麼。 3. 恢復步驟:逐條給出命令,每條說明作用和執行後應該看到什麼。根據情況選擇: - 只想撤銷工作區或暫存區的改動:restore; - 本地提交還沒推送:reset(說明 soft、mixed、hard 的區別,能用 soft 或 mixed 就不用 hard); - 已經推送且有其他人在用的分支:用 revert 生成反向提交,不改寫歷史; - 「找不回來了」的提交:用 reflog 找到之前的位置; - 提交到了錯誤的分支:把提交移到正確分支,再從錯誤分支移除。 4. 如果確實需要強制推送,說明影響、通知其他人的方式,並使用更安全的強制推送選項(遠程分支在此期間有他人更新時會拒絕覆蓋)。 5. 最後給出驗證命令,確認恢復成功。 6. 一句話說明以後怎麼避免。 資訊不足以判斷時,告訴我先執行哪條只讀命令(如 git status、git log --oneline -n 20、git reflog -n 20)並把輸出貼給你。
高亮處換成你自己的內容:[執行過的命令]、[現在的狀態]、[期望的結果]、[是/否/不確定]、[是/否]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:[執行過的命令] 盡量準確,可以用終端的歷史記錄查。[相關提交是否已經推送到遠程] 和 [這個分支是否有其他人在用] 決定了能不能改寫歷史,是最關鍵的兩個資訊。
常見坑:
- 遇事先
reset --hard,結果把還沒提交的改動也丟了。工作區裏從未提交過的改動,Git 是無法幫你找回的。 - 已經推送到公共分支的提交,用 reset 加強制推送撤銷,會打亂其他人的本地倉庫。公共分支用 revert。
- 以為提交「消失」了就是沒了。只要提交過,本地的 reflog 通常會保留一段時間(具體期限由配置決定),可以找回。
追問技巧:不確定當前狀態時,先把 git status、git log --oneline --graph -n 20、git reflog -n 20 三條命令的輸出都貼給 AI,它能更準確地判斷。
示例輸出
示例,僅供參考(情況:執行了 git reset --hard HEAD~2,丟了兩個本地提交,未推送)
判斷:可以恢復。被 reset 掉的兩個提交仍在 reflog 中。
bash
git branch backup-before-rescue # 1. 先備份當前位置
git reflog -n 10 # 2. 找到 reset 之前的記錄
# 輸出類似:
# a1b2c3d HEAD@{0}: reset: moving to HEAD~2
# 9f8e7d6 HEAD@{1}: commit: 完成優惠券校驗
git reset --hard 9f8e7d6 # 3. 回到 reset 之前的提交
git log --oneline -n 5 # 4. 確認兩個提交已回來
注意第 3 步的 --hard 會丟棄當前工作區未提交的改動,執行前先用 git status 確認工作區是乾淨的。
以後怎麼避免:執行 reset 之前先 git branch backup 留一個書籤。
同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~