請教各位前輩Github上Pull Request如果被Revert後,程式碼要怎麼還原?
場景如下:
現在有2個分支,一個為pre_release預發布分支,一個為feature_order特性分支
步驟如下:
1、現在我在feature_order特性分支上進行了修改,然後在GitHub上使用了Pull Request操作
2、pre_release預發布分支同意了該Pull Request請求,Merge了代碼
3、但是此時發生了一些事情,需要進行Revert,使用GitHub上的Revert功能把該Pull Request進行Revert
症狀如下:
1、Revert後,feature_order特性分支從pre_release預發布分支上拉取程式碼到本地進行Merge合併,發現先前Pull Request的程式碼被刪除了
2、如果不從pre_release預發布分支上拉取程式碼,也不能再進行Pull Request操作,顯示沒有改動,這裡應該是跟CommitId有關,因為Revert是發起一次新的Pull Request後進行的Merge,之前的Merge已經在歷史中了,沒有改動看起來也算合理
除非在pre_release預發布分支再次對剛剛Revert操作發起的Pull Request這整個操作產生的Commit再次進行Revert,也就是撤銷“撤銷”操作,這樣的話不就把想撤下來的代碼再次放到pre_release預發布分支才可以恢復過來…
我想要的是feature_order特性分支上的程式碼不被刪除,可以對pre_release預發布分支發起Pull Request,撤銷後程式碼不被刪除
請問各位前輩該怎麼做才對?實在是無解的死循環啊…
我處理這種事情的手段比較粗暴,通常不會使用revert而是reset,將pre_release分支reset到pull request之前的hash即可。
另外推薦兩個指令:cherry-pick和rebase,在處理這種錯誤操作的時候十分有用。
另外附一篇我的日誌:http://leo108.com/pid-2026.asp