記錄一次挖坑過程,idea git 代碼分支合反了,如何補救

挖坑過程      

       有一個新功能開發,開始我先從master分支上拉一個新分支feature-plu-0528,新功能將在這個分支上開發。開發完成之後,我開始把我的開發分支feature-plu-0528,往測試分支上(dev分支)合併。結果就是把分支合反了,dev合到了我的分支,如圖1。這樣導致了什麼結果,dev上很多其他人開發的代碼,不管需要不需要上線的代碼都合到了我的開發分支上,我的分支肯定就髒了,不能往master合併。怎麼辦,開始想辦法填坑,首先有沒有影響到別人,對dev分支有沒有影響,因爲操作記錄顯示dev合到了我的分支,我的分支又合到了dev,如圖2,結果對其他分支沒有影響。現在情況好點,大不了我的分支不要了,重新拉個分支重新把我的代碼弄到這個分支。其時更好地方案是:只要把我的分支回退到合反之前的代碼不就行了。我也不敢搞了,找大佬吧。

填坑過程

填坑1:找開發同事幫忙,怎麼操作的,如圖3,直接Revert commit,還有一些其他的,忘了,只說Revert commit,存在兩個問題:1,這個東西什麼作用,針對我的分支本次commit操作,進行撤銷,僅僅是本次操作(判空)commit,對後面的分支合反了的代碼,並沒有回滾;2,而且我的開發分支遠程的代碼也是錯誤的,沒有回退。

填坑2:怎麼解決

1,回退我開發分支本地的代碼

2,回退我開發分支遠程的代碼

方式1,使用命令

git reset --hard 回退地方的版本號 (回退本地代碼)

git push -f  (強制將回退的代碼push到遠程)

方式2,使用頁面操作,如下圖及圖5

回退本地

回退遠程,也可以使用git push -f 方式

方式3,頁面操作

回退本地,如下圖,回退遠程可用 git push -f 方式

綜上三種回退方式,說白了是三種回退本地代碼的方式,回退遠程方式實際是兩種

1,強制回退 git push -f

2,針對方式不足,請參考:https://www.cnblogs.com/luoa/p/11729856.html

回退後記錄

意外情況 

當我以爲本地乾淨了,如上圖,我想修改一個bug,取最新一條,提交代碼是,竟然很多讓我提交的代碼,內容有回退的內容等,爲什麼?本地應該已回退,怎麼有這些已commit未push的代碼。

怎麼解決:把我的開發分支恢復到與開發遠程分支一致。能行嗎:這樣搞,我回退版本之前的代碼不也沒了,細想一下是有的,因爲我之前開發的代碼已經push到遠程開發分支了。直接搞

>git reset --hard origin/feature-plu-0528

 

總結:

如果一個分支就一個人開發還好,如果多人在一個分支上開發,這樣回退代碼比較危險,你回退到某個版本,但是後面如果有其他人,也提交了代碼,就會把其他人的代碼也回退掉,這個坑就有點大。有沒有更好的方法,我只回退我自己的代碼,遠程也是,不回退別人的代碼?待續。。。

圖1

圖2

圖3

 圖4

圖5 

圖6

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章