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