Git工具 conflict沖突問(wèn)題解決方案
這篇文章需要對(duì)git具有一定的了解,并且知道如何安裝git工具(其實(shí)就是上git官網(wǎng)下載個(gè)文件,安裝)
git這種版本控制工具有什么好處
第一個(gè),方便可以多人協(xié)同開(kāi)發(fā)同一個(gè)項(xiàng)目或系統(tǒng)
第二個(gè),當(dāng)你系統(tǒng)開(kāi)發(fā)到一個(gè)穩(wěn)定版本后為了開(kāi)發(fā)新的功能,肯定要把開(kāi)發(fā)好后的系統(tǒng)代碼進(jìn)行備份保存起來(lái),不然萬(wàn)一那個(gè)不懂事的小程序猿刪的代碼你咋整呢
而代碼倉(cāng)庫(kù)可以為你解決這個(gè)問(wèn)題,而使用git倉(cāng)庫(kù)的項(xiàng)目,就需要用到git工具
版本控制工具git或svn使用方式來(lái)說(shuō),一種命令行,一個(gè)是使用可視化工具進(jìn)行操作。
git的可視化工具有很多,大部分原理都想通。(間接調(diào)用命令行進(jìn)行操作。)
簡(jiǎn)單的clonerepository克隆倉(cāng)庫(kù),openlocal repository打開(kāi)本地倉(cāng)庫(kù),什么的就不說(shuō)的
這里以SourceTree界面來(lái)舉例
一般我們從遠(yuǎn)程倉(cāng)庫(kù)上克隆代碼到本地倉(cāng)庫(kù)后,我們的操作一般就是,
1、pull 拉取遠(yuǎn)程倉(cāng)庫(kù)上的代碼
2、修改本地代碼,
3、然后commit,commit時(shí)候選擇你要提交的你修改過(guò)的文件填寫提交的作者,日期,說(shuō)明信息。這樣你本地倉(cāng)庫(kù)代碼已經(jīng)提交完成了,
4、將本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行同步,使用push命令推送到遠(yuǎn)程倉(cāng)庫(kù)
上面的四個(gè)步驟是理想化狀態(tài)下的一般步驟,當(dāng)單人使用的時(shí)候不會(huì)出錯(cuò),兩個(gè)人可能也不會(huì)有問(wèn)題,但隨著人數(shù)增多,肯定會(huì)遇倒這樣那樣的問(wèn)題。
問(wèn)題情況1:如從遠(yuǎn)端拉取到正式版本后,我增加的文件,或修改的代碼,然后在將修改或增加的代碼同步到遠(yuǎn)端,但在我push之前,有另一個(gè)人也從遠(yuǎn)端拉取得代碼
并且更新完成代碼,并push到遠(yuǎn)程倉(cāng)庫(kù)的。這個(gè)時(shí)候我commit沒(méi)有問(wèn)題,但是我push不成功,還有一個(gè)就是我也正在修改代碼,然后不能將代碼pull下來(lái)
問(wèn)題原因:很明顯,遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)被修改的,所以不能推送我們的更改
截圖看的更清晰:
我在不同文件夾下拉取的相同的遠(yuǎn)程倉(cāng)庫(kù)一個(gè)是在D:/Source_code/MergeRepo 另一個(gè)在D:/Source_code/New/MergeRepo
我先將其中一個(gè)倉(cāng)庫(kù)增加一個(gè)文件 “測(cè)試push文件時(shí)沖突問(wèn)題.txt”
常規(guī)操作,commit push,完成
我們可以看到文件已經(jīng)上傳到遠(yuǎn)程分支上的
再接著看另一個(gè)本地倉(cāng)庫(kù),可以看到下圖,pull按鈕有一個(gè)提示,遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)更新的,但這個(gè)時(shí)候我們可能還在開(kāi)發(fā)新的功能,
可能這個(gè)工具沒(méi)有顯示遠(yuǎn)程有更新可以拉取,我們想要將寫好的功能提交到遠(yuǎn)程倉(cāng)庫(kù)
執(zhí)行,commit ,push,然后就,,出現(xiàn)錯(cuò)誤,遠(yuǎn)程倉(cāng)庫(kù)已經(jīng)更新的,不能推送。
這需要先將遠(yuǎn)程代碼pull下來(lái),但是可能也拉取不成功
因?yàn)樾鹿δ軙?huì)存在修改我們拉取下來(lái)的項(xiàng)目的文件,所以我們當(dāng)前就不能將遠(yuǎn)程更新的代碼拉取下來(lái),會(huì)提示我們先stashsave我們修改過(guò)的代碼,
然后再pull更新遠(yuǎn)程代碼,最后再將我們存放到棧里面的開(kāi)發(fā)新功能代碼修改彈出棧,stashpop
解決辦法:所以我們要先把遠(yuǎn)程倉(cāng)庫(kù)的代碼拉取下來(lái),但是會(huì)存在拉取不下來(lái)的問(wèn)題。
我們需要將我們的更改存放到棧內(nèi)存中,也就是使用stash save命令,然后在拉取服務(wù)器端更新過(guò)的代碼,然后在使用stashpop命令將我們之前的修改取出來(lái)合并到
本地代碼倉(cāng)庫(kù)中去。
當(dāng)然上面的stash pop彈出改變的內(nèi)容時(shí)會(huì)有conflict問(wèn)題出現(xiàn),我們找到發(fā)生沖突的文件,講我們需要的文件內(nèi)容保留下來(lái)就可以啦
?。ㄒ院笥薪貓D的時(shí)候再詳細(xì)講)
最后沖突解決完成的,我們?cè)侔凑粘R?guī)流程走,commit,push
情況2:需要在正式發(fā)布好的產(chǎn)品上添加新的功能,不可能在主分支上開(kāi)發(fā)新功能,比如我們正式版本是在master分支上,
解決方法:我們就需要在復(fù)制一份本地倉(cāng)庫(kù)中的master版本,取新的
名字,在這個(gè)新的名字分支上開(kāi)發(fā)新的功能,然后我們將新的版本提交到我們遠(yuǎn)程倉(cāng)庫(kù)分支上上。
提交完成后,我們將本地倉(cāng)庫(kù)切換到master分支,在選中我們開(kāi)發(fā)的新功能分支,右鍵點(diǎn)擊merge合并選中的分支到當(dāng)前分支中。
到這里,新功能開(kāi)發(fā)任務(wù)就完成啦,合并到master分支,主分支也擁有這個(gè)新開(kāi)發(fā)的功能模塊的
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 解決 INSTALL FAILED CONFLICTING PROVIDER的問(wèn)題方法
- Android 出現(xiàn)問(wèn)題Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER解決辦法
- 三分鐘帶你玩轉(zhuǎn)jQuery.noConflict()
- 輕松搞定jQuery.noConflict()
- jQuery中noConflict()用法實(shí)例分析
- jQuery中noconflict函數(shù)的實(shí)現(xiàn)原理分解
- jquery插件沖突(jquery.noconflict)解決方法分享
- jQuery中 noConflict() 方法使用
相關(guān)文章
MyBatis SELECT基本查詢實(shí)現(xiàn)方法詳解
這篇文章主要介紹了MyBatis SELECT基本查詢實(shí)現(xiàn)方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08MyBatis-Plus不使用數(shù)據(jù)庫(kù)默認(rèn)值的問(wèn)題及解決
這篇文章主要介紹了MyBatis-Plus不使用數(shù)據(jù)庫(kù)默認(rèn)值的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07java web學(xué)習(xí)_淺談request對(duì)象中g(shù)et和post的差異
下面小編就為大家?guī)?lái)一篇java web學(xué)習(xí)_淺談request對(duì)象中g(shù)et和post的差異。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05