假設我有一個分支case-xyz,在這裏我爲case #xyz工作,「實現Hello World」。「反向合併」分支
在開發過程中,我添加了不應該成爲最終提交的一部分的調試輸出等。
我可以這樣做以下:
- 分行情況下-XYZ-調試和提交調試代碼只有在那裏。
- 偶爾會將case-xyz-debug合併到case-xyz中。
- 提交應該進入case-xyz最終補丁的東西。
- 最後,「反向合併」case-xyz-debug,即刪除所有來自該分支的更改,與何時合併爲case-xyz無關。換句話說,這應該相當於從case-xyz-debug恢復所有合併。
我知道,當恢復合併提交時,Git不會忘記合併,即它仍然認爲您已經合併,因此您只能通過還原還原來重新合併。因此,只需要刪除case-xyz-debug中最初提交的所有更改,記錄的內容是無關緊要的。然而,這將是很好,如果我也可以做類似如下:
- git的結帳的情況下,XYZ
- git的結帳情況下-XYZ-做
- 混帳 「反向合併」 的情況下,XYZ-調試
,因爲我可能要繼續開發/調試:
- git的結帳的情況下,XYZ
- 變化的文件
- git的承諾-am 「哎呀,忘帶了什麼東西」
- git的結帳情況下-XYZ-真的,做
- 混帳 「反向合併」 案-XYZ-調試
我希望我的意圖很清楚。如果能夠實現這一目標,但採用完全不同的方式,我也會很開心。
恕我直言,這不僅難以做到,而且是危險的。如果無意中在調試分支中添加了非調試代碼會怎麼樣?如果有一天你想讓你調試代碼呢?我會明確添加調試語句,並像大多數語言一樣在發佈代碼中禁用它們。 – CharlesB
如果你真的設置了這個,你可以使用'rebase'從你的調試分支中刪除提交。做'分支case-xyz-before-rebase',然後'rebase case-xyz-done case-xyz -i'並移除或擠壓你的調試提交。但是CharlesB是對的,它比它的價值更麻煩。調試調用你最好'grep'並確保它們被註釋掉。 – willoller