現在程式猿标配GIT作為代碼管理,但是從SVN到GIT學習中,其中GIT的沖突是一個難點,常常會導緻Push不上去,Pull不下來,很尴尬的地步,還不知道自己寫的代碼被覆寫沒,廢話不多說,直接上幹貨!
采用<code>SourceTree插件</code>和<code>BeyondCompare</code> 可視化解決沖突
A 修改了conflict.file 中第1行内容并且送出到git上
B 這個時候也修改了confilct.file中第一行内容準備送出,這個時候git就會提示
提示遠端已經有更新了,本地版本太低,讓我們先pull拉取最新的代碼。
我們pull一下,這個時候由于本地有修改這個檔案,就會在本地産生沖突檔案
打開SourceTree->工具->選項->比較->外部差異對比合并->選擇BeyondCompare
在本地副本->右鍵->解決沖突->打開外部合并工具
和svn一樣解決好沖突儲存更改,退出即可
拉取時出現如下提示:
提示需要暫存本地修改,才能拉取伺服器上新的代碼
點選貯存(英文版:Stash),随便起一個名字,裡面存的都是距離上次伺服器版本到本地修改之間的差異,千萬别删掉了,合并成功無誤了再删掉。
pull拉取伺服器代碼,這個時候,本地的代碼變成了伺服器上的代碼。
點選貯藏->應用貯藏區 ,這個時候是把之前的修改合并到本地上,這個時候會提示沖突。
可以在sourcetree裡看到有感歎号,代表沖突檔案,和上面解決沖突方法類似,但是稍微不同,最左邊成了遠端版本,中間為遠端上一個版本,最後才是本地修改。
這個是和我們操作方式有關:我們是先暫存本地修改,先拉取遠端代碼,這個時候local 就成了遠端代碼,最後我們用暫存的合并進去,remote就成了本地修改
這個是由于git自身造成的 它會解決沖突後 生成一個原來沖突的備份,我們可以去掉
<code>git config --global mergetool.keepBackup false</code>