Git 合併衝突怎麼解決提示詞(逐塊分析雙方改動意圖,給出合併結果與驗證步驟)
merge 或 rebase 時衝突了,衝突塊又多又看不懂、不敢隨便選一邊時用:把衝突內容和雙方的提交資訊貼給 AI,讓它先弄清兩邊各自想改什麼,再給出保留雙方意圖的合併結果,並提示要跑哪些測試確認沒合壞。
通用大模型 對話模型通用
我在合併代碼時遇到衝突,請幫我分析並解決。 - 操作:[操作](可選:merge/rebase/cherry-pick) - 當前分支與合入分支:[當前分支與合入分支](例:當前 feature/coupon,合入 main) - 衝突文件和衝突內容(包含衝突標記的原文): [粘貼衝突內容] - 雙方相關的提交資訊(可以用 git log 查到): [粘貼提交資訊] - 我對兩邊改動的了解:[如我改了折扣計算,同事加了會員等級] 請這樣處理: 1. 先說明衝突標記中「當前一側」和「合入一側」分別是誰。注意:rebase 時這兩側的含義和 merge 相反,請按我的操作類型說明。 2. 對每個衝突塊分別分析: - 一側改了什麼、意圖是什麼; - 另一側改了什麼、意圖是什麼; - 兩者是否真正矛盾:只是改了相鄰的行(可以都保留)、改了同一邏輯的不同方面(需要融合)、還是互相沖突的需求(需要我決定)。 3. 給出合併後的代碼。需要融合時,說明融合後的邏輯同時滿足了雙方的哪些意圖。真正衝突、無法替我決定的,列出選項讓我選,不要擅自決定。 4. 檢查衝突區域之外的隱性衝突:比如一方重命名了函數、另一方新增了對舊函數名的調用;一方改了函數參數,另一方在別處按舊參數調用。這些不會產生衝突標記,但合併後會出錯。 5. 給出解決後的操作命令(標記解決、繼續 rebase 或完成合並),以及合併後應該運行的測試或檢查。 6. 如果衝突過於複雜,告訴我如何安全地放棄這次合併回到合併前的狀態。
高亮處換成你自己的內容:[操作]、[當前分支與合入分支]、[粘貼衝突內容]、[粘貼提交資訊]、[如我改了折扣計算,同事加了會員等級]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:衝突內容要包含完整的衝突標記和上下文,最好把整個衝突文件貼上。雙方的提交資訊非常重要,AI 靠它理解「為什麼改」,否則只能根據代碼猜。
常見坑:
- rebase 時,衝突標記裏的「當前」一側其實是你要合入的上游分支,你自己的改動在另一側,和 merge 正好相反。很多人在 rebase 時選錯了一邊,把自己的改動丟掉了。
- 只解決有衝突標記的地方,忽略了隱性衝突。合併完能編譯不代表邏輯正確,一定要跑測試。
- 遇到看不懂的衝突就直接選「全部用我的」,悄悄覆蓋了同事的修復。拿不準時問對方。
追問技巧:解決完後,把 git diff 的結果貼回去,問「檢查合併結果是否同時保留了雙方的改動,有沒有遺漏」。
示例輸出
示例,僅供參考(merge,當前分支 feature/coupon,合入 main)
衝突塊 1:calcPrice()
- 當前一側(feature/coupon,你的改動):在折扣計算中加入優惠券抵扣;
- 合入一側(main,同事的改動):把會員折扣從固定 9 折改為按會員等級取折扣率;
- 判斷:改了同一邏輯的不同方面,需要融合。
js
function calcPrice(order, user, coupon) {
const rate = memberRate(user.level) // 來自 main:按等級取折扣
const discounted = order.total * rate
return Math.max(0, discounted - (coupon?.amount ?? 0)) // 來自你的分支:優惠券抵扣
}
需要你決定:優惠券應該在會員折扣之前還是之後抵扣?兩種順序的最終金額不同。
隱性衝突:main 把 getMemberDiscount() 改名為 memberRate(),你的分支在 cart.js 中仍調用舊函數名,合併後會報錯。
bash
git add src/price.js src/cart.js
npm test # 提交前先確認測試通過
git commit # 完成合並
如果在提交之前想放棄這次合併、回到合併前的狀態:git merge --abort。
同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


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