Git工具 conflict衝突問題解決方案
這篇文章需要對git具有一定的瞭解,並且知道如何安裝git工具(其實就是上git官網下載個檔案,安裝)
git這種版本控制工具有什麼好處
第一個,方便可以多人協同開發同一個專案或系統
第二個,當你係統開發到一個穩定版本後為了開發新的功能,肯定要把開發好後的系統程式碼進行備份儲存起來,不然萬一那個不懂事的小程式猿刪的程式碼你咋整呢
而程式碼倉庫可以為你解決這個問題,而使用git倉庫的專案,就需要用到git工具
版本控制工具git或svn使用方式來說,一種命令列,一個是使用視覺化工具進行操作。
git的視覺化工具有很多,大部分原理都想通。(間接呼叫命令列進行操作。)
簡單的clonerepository克隆倉庫,openlocal repository開啟本地倉庫,什麼的就不說的
這裡以SourceTree介面來舉例
一般我們從遠端倉庫上克隆程式碼到本地倉庫後,我們的操作一般就是,
1、pull 拉取遠端倉庫上的程式碼
2、修改原生代碼,
3、然後commit,commit時候選擇你要提交的你修改過的檔案填寫提交的作者,日期,說明資訊。這樣你本地倉庫程式碼已經提交完成了,
4、將本地倉庫和遠端倉庫進行同步,使用push命令推送到遠端倉庫
上面的四個步驟是理想化狀態下的一般步驟,當單人使用的時候不會出錯,兩個人可能也不會有問題,但隨著人數增多,肯定會遇倒這樣那樣的問題。
問題情況1:如從遠端拉取到正式版本後,我增加的檔案,或修改的程式碼,然後在將修改或增加的程式碼同步到遠端,但在我push之前,有另一個人也從遠端拉取得程式碼
並且更新完成程式碼,並push到遠端倉庫的。這個時候我commit沒有問題,但是我push不成功,還有一個就是我也正在修改程式碼,然後不能將程式碼pull下來
問題原因:很明顯,遠端倉庫已經被修改的,所以不能推送我們的更改
截圖看的更清晰:
我在不同資料夾下拉取的相同的遠端倉庫一個是在D:/Source_code/MergeRepo 另一個在D:/Source_code/New/MergeRepo
我先將其中一個倉庫增加一個檔案 “測試push檔案時衝突問題.txt”
常規操作,commit push,完成
我們可以看到檔案已經上傳到遠端分支上的
再接著看另一個本地倉庫,可以看到下圖,pull按鈕有一個提示,遠端倉庫已經更新的,但這個時候我們可能還在開發新的功能,
可能這個工具沒有顯示遠端有更新可以拉取,我們想要將寫好的功能提交到遠端倉庫
執行,commit ,push,然後就,,出現錯誤,遠端倉庫已經更新的,不能推送。
這需要先將遠端程式碼pull下來,但是可能也拉取不成功
因為新功能會存在修改我們拉取下來的專案的檔案,所以我們當前就不能將遠端更新的程式碼拉取下來,會提示我們先stashsave我們修改過的程式碼,
然後再pull更新遠端程式碼,最後再將我們存放到棧裡面的開發新功能程式碼修改彈出棧,stashpop
解決辦法:所以我們要先把遠端倉庫的程式碼拉取下來,但是會存在拉取不下來的問題。
我們需要將我們的更改存放到棧記憶體中,也就是使用stash save命令,然後在拉取伺服器端更新過的程式碼,然後在使用stashpop命令將我們之前的修改取出來合併到
原生代碼倉庫中去。
當然上面的stash pop彈出改變的內容時會有conflict問題出現,我們找到發生衝突的檔案,講我們需要的檔案內容保留下來就可以啦
(以後有截圖的時候再詳細講)
最後衝突解決完成的,我們再按照常規流程走,commit,push
情況2:需要在正式釋出好的產品上新增新的功能,不可能在主分支上開發新功能,比如我們正式版本是在master分支上,
解決方法:我們就需要在複製一份本地倉庫中的master版本,取新的
名字,在這個新的名字分支上開發新的功能,然後我們將新的版本提交到我們遠端倉庫分支上上。
提交完成後,我們將本地倉庫切換到master分支,在選中我們開發的新功能分支,右鍵點選merge合併選中的分支到當前分支中。
到這裡,新功能開發任務就完成啦,合併到master分支,主分支也擁有這個新開發的功能模組的
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。