1. 程式人生 > 程式設計 >Git工具 conflict衝突問題解決方案

Git工具 conflict衝突問題解決方案

這篇文章需要對git具有一定的瞭解,並且知道如何安裝git工具(其實就是上git官網下載個檔案,安裝)

git這種版本控制工具有什麼好處

  第一個,方便可以多人協同開發同一個專案或系統

  第二個,當你係統開發到一個穩定版本後為了開發新的功能,肯定要把開發好後的系統程式碼進行備份儲存起來,不然萬一那個不懂事的小程式猿刪的程式碼你咋整呢

而程式碼倉庫可以為你解決這個問題,而使用git倉庫的專案,就需要用到git工具

版本控制工具git或svn使用方式來說,一種命令列,一個是使用視覺化工具進行操作。

git的視覺化工具有很多,大部分原理都想通。(間接呼叫命令列進行操作。)

簡單的clonerepository克隆倉庫,openlocal repository開啟本地倉庫,什麼的就不說的

這裡以SourceTree介面來舉例

Git工具 conflict衝突問題解決方案

一般我們從遠端倉庫上克隆程式碼到本地倉庫後,我們的操作一般就是,

  1、pull 拉取遠端倉庫上的程式碼

  2、修改原生代碼,

  3、然後commit,commit時候選擇你要提交的你修改過的檔案填寫提交的作者,日期,說明資訊。這樣你本地倉庫程式碼已經提交完成了,

  4、將本地倉庫和遠端倉庫進行同步,使用push命令推送到遠端倉庫

上面的四個步驟是理想化狀態下的一般步驟,當單人使用的時候不會出錯,兩個人可能也不會有問題,但隨著人數增多,肯定會遇倒這樣那樣的問題。

問題情況1:如從遠端拉取到正式版本後,我增加的檔案,或修改的程式碼,然後在將修改或增加的程式碼同步到遠端,但在我push之前,有另一個人也從遠端拉取得程式碼

    並且更新完成程式碼,並push到遠端倉庫的。這個時候我commit沒有問題,但是我push不成功,還有一個就是我也正在修改程式碼,然後不能將程式碼pull下來

問題原因:很明顯,遠端倉庫已經被修改的,所以不能推送我們的更改

截圖看的更清晰:

我在不同資料夾下拉取的相同的遠端倉庫一個是在D:/Source_code/MergeRepo 另一個在D:/Source_code/New/MergeRepo

Git工具 conflict衝突問題解決方案

我先將其中一個倉庫增加一個檔案 “測試push檔案時衝突問題.txt”

常規操作,commit push,完成

Git工具 conflict衝突問題解決方案

我們可以看到檔案已經上傳到遠端分支上的

Git工具 conflict衝突問題解決方案

再接著看另一個本地倉庫,可以看到下圖,pull按鈕有一個提示,遠端倉庫已經更新的,但這個時候我們可能還在開發新的功能,

Git工具 conflict衝突問題解決方案

可能這個工具沒有顯示遠端有更新可以拉取,我們想要將寫好的功能提交到遠端倉庫

執行,commit ,push,然後就,,出現錯誤,遠端倉庫已經更新的,不能推送。

Git工具 conflict衝突問題解決方案

這需要先將遠端程式碼pull下來,但是可能也拉取不成功

因為新功能會存在修改我們拉取下來的專案的檔案,所以我們當前就不能將遠端更新的程式碼拉取下來,會提示我們先stashsave我們修改過的程式碼,

然後再pull更新遠端程式碼,最後再將我們存放到棧裡面的開發新功能程式碼修改彈出棧,stashpop

  解決辦法:所以我們要先把遠端倉庫的程式碼拉取下來,但是會存在拉取不下來的問題。

      我們需要將我們的更改存放到棧記憶體中,也就是使用stash save命令,然後在拉取伺服器端更新過的程式碼,然後在使用stashpop命令將我們之前的修改取出來合併到

      原生代碼倉庫中去。

      當然上面的stash pop彈出改變的內容時會有conflict問題出現,我們找到發生衝突的檔案,講我們需要的檔案內容保留下來就可以啦

      (以後有截圖的時候再詳細講)

      最後衝突解決完成的,我們再按照常規流程走,commit,push

情況2:需要在正式釋出好的產品上新增新的功能,不可能在主分支上開發新功能,比如我們正式版本是在master分支上,

    

  解決方法:我們就需要在複製一份本地倉庫中的master版本,取新的

      名字,在這個新的名字分支上開發新的功能,然後我們將新的版本提交到我們遠端倉庫分支上上。

      提交完成後,我們將本地倉庫切換到master分支,在選中我們開發的新功能分支,右鍵點選merge合併選中的分支到當前分支中。

      到這裡,新功能開發任務就完成啦,合併到master分支,主分支也擁有這個新開發的功能模組的

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。