Git 代碼提交到遠(yuǎn)程主分支后被覆蓋(消失)的解決方法:
問題描述
在提交代碼的時候,有兩個人,比如叫A與B,現(xiàn)在A從遠(yuǎn)程主分支master拉了代碼到自己本地,本地電腦形成local A與local B分支,然后寫了自己的需求代碼commit并推送到遠(yuǎn)程倉庫,形成自己的origin A與origin B,然后兩個人進(jìn)行合并請求merge request,請求merge后,master主分支里代碼少了一部分。
提示:原因是因為兩個人分別互相pull了對方遠(yuǎn)程分支的代碼,然后對master分支進(jìn)行push的時候會發(fā)生沖突,導(dǎo)致代碼覆蓋或其中一個人的代碼消失
原因分析:
A與B在某些時刻pull了對方的遠(yuǎn)程代碼倉庫,比如A同學(xué) pull了B的遠(yuǎn)程分支origin B,然后加到了自己的commit里并push到自己的遠(yuǎn)程倉庫,會導(dǎo)致一些代碼合并沖突。
下圖是Git協(xié)作模式工作流,開發(fā)人員是不允許互相pull的,只能拉主分支的代碼并合并到主分支
解決方案:
以下為解決方案,分為幾步進(jìn)行,比如A同學(xué)要解決沖突。
- 第一步,A回滾本地代碼倉庫local A到?jīng)]有pull對方代碼的時候,也就是說找到pull origin B的時候的前一次commit的標(biāo)記點。
- 第二步,修改代碼,把自己的需求代碼寫入,推送到A的遠(yuǎn)程分支重新請求合并
以上兩步就可以解決沖突
下面來詳細(xì)演示下第一步的流程:
- 使用git log查看commit日志,找到?jīng)]有跟別人合并的時候的點
如下圖所示,敲入git log命令,并查找到最后一次提交,比如是這個6d27開頭的commit id,找到這個id后我們進(jìn)行回滾,使用git reset命令
注意?。。?! 注意?。。?!
在reset前要把自己寫的新需求的代碼保存到當(dāng)?shù)兀梢员4娴接浭卤净蛘邥簳r新建個py文件,因為回滾后新代碼就消失了
-
先回退本地的這次提交, git reset --hard [commit id]
在reset前要把自己寫的新需求的代碼保存到當(dāng)?shù)?,可以保存到記事本或者暫時新建個py文件,因為回滾后新代碼就消失了
-
將本地修改強(qiáng)制push到遠(yuǎn)程倉庫 git push --force
第二步的流程就跟往常一樣了:
第二步就是平常工作時的流程,本地代碼回滾后自己寫的需求代碼消失了,所以需要將自己之前寫的 代碼寫進(jìn)去—進(jìn)行commit–然后push—遠(yuǎn)程倉庫請求merge文章來源:http://www.zghlxwxcb.cn/news/detail-468909.html
總結(jié):
好了,這就是git提交發(fā)生沖突的時候,一種解決方法思路,如果有碰到相同問題的可以借鑒一下文章來源地址http://www.zghlxwxcb.cn/news/detail-468909.html
到了這里,關(guān)于Git 代碼提交到遠(yuǎn)程主分支后發(fā)生沖突或者覆蓋的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!