如何解決git revert后再次merge代碼丟失問(wèn)題
git revert后再次merge代碼丟失問(wèn)題
問(wèn)題場(chǎng)景
公司使用gitlab作為代碼管理工具,開(kāi)發(fā)人員新功能開(kāi)發(fā)結(jié)束時(shí)(開(kāi)發(fā)分支:feature-member),合并代碼需要提交mr(pr)給相關(guān)負(fù)責(zé)人,由負(fù)責(zé)人將代碼合并到master。
此時(shí)產(chǎn)品說(shuō)暫時(shí)不上線此版本,和下一個(gè)版本一起發(fā)布,為了保證master分支代碼的準(zhǔn)確性,我們使用git revert將本次mr撤銷。
然后等下個(gè)版本開(kāi)發(fā)完成后,提交了mr,發(fā)現(xiàn)變動(dòng)的文件只有revert之后的變動(dòng),第一次mr的文件改動(dòng)都沒(méi)有了(git revert后再次merge,git默認(rèn)會(huì)丟棄這段代碼)。
解決方案
# 切換到master分支 git checkout master git pull # 基于master拉出一個(gè)分支 revert_tmp git checkout -b revert_tmp # 將之前git revert那次commit再次revert(commit號(hào)從git log可以查到) git revert acd414e1cd42315ce93a9730db961155be140013 git checkout feature-member git merge revert_tmp git commit -m "revert" git push
經(jīng)過(guò)以上操作后,再次提pr,這樣第一次revert之前的代碼就可以看到了。
git revert 某次 merge 之后再重新 merge 代碼被沖掉
問(wèn)題
在 develop 分支發(fā)現(xiàn) merge 某個(gè) feature 分支時(shí)的代碼有問(wèn)題(如果是 feature 分支的代碼有問(wèn)題,只要修改該 feature 分支的代碼,再 merge 到 develop 就好了。
如果是 merge 的時(shí)候沖突沒(méi)有解決好則需要 revert 該次 merge),于是用 ’git revert < commit id > -m 1 ‘ 命令 revert 了該次 merge , 但是 revert 之后想把這個(gè) feature 分支再重新merge到develop 分支時(shí),發(fā)現(xiàn) merge 不了。
解決方法
在 revert feature 的 merge 之后,checkout 到 feature 分支,
使用 git reset head^ 撤銷上次提交(如果merge前有多個(gè)提交就撤消所有提交)
然后修改有問(wèn)題的代碼,代碼沒(méi)問(wèn)題的話不修改也行
修改完后 ,將代碼提交并強(qiáng)推到遠(yuǎn)程分支
git add . git commit -m “” git push -f
再 checkout develop 切換到 develop 分支
用 git merge 再merge 一次該feature分支,就會(huì)發(fā)現(xiàn)代碼都 merge上去了
最后 push 到遠(yuǎn)程就ok了。
總結(jié)
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spark中的數(shù)據(jù)讀取保存和累加器實(shí)例詳解
這篇文章主要為大家介紹了Spark中的數(shù)據(jù)讀取保存和累加器實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11vs快捷鍵 用好Ctrl+Enter與Ctrl+Shift+Enter組合鍵讓你的編輯代碼速度快了很多
使用Ctrl+Enter組合鍵在上方插入一行,使用Ctrl+Shift+Enter組合鍵在下方插入一行2011-04-04判斷Email地址是否正確的幾個(gè)函數(shù)(asp/php/javascript)
今天總結(jié)了幾個(gè)判斷Email地址的函數(shù),和大家分享一下2010-08-08