天天看點

「GIT SourceTree沖突」解決方案

現在程式猿标配GIT作為代碼管理,但是從SVN到GIT學習中,其中GIT的沖突是一個難點,常常會導緻Push不上去,Pull不下來,很尴尬的地步,還不知道自己寫的代碼被覆寫沒,廢話不多說,直接上幹貨!

采用<code>SourceTree插件</code>和<code>BeyondCompare</code> 可視化解決沖突

A 修改了conflict.file 中第1行内容并且送出到git上

B 這個時候也修改了confilct.file中第一行内容準備送出,這個時候git就會提示

提示遠端已經有更新了,本地版本太低,讓我們先pull拉取最新的代碼。

我們pull一下,這個時候由于本地有修改這個檔案,就會在本地産生沖突檔案

打開SourceTree-&gt;工具-&gt;選項-&gt;比較-&gt;外部差異對比合并-&gt;選擇BeyondCompare

在本地副本-&gt;右鍵-&gt;解決沖突-&gt;打開外部合并工具

和svn一樣解決好沖突儲存更改,退出即可

拉取時出現如下提示:

提示需要暫存本地修改,才能拉取伺服器上新的代碼

點選貯存(英文版:Stash),随便起一個名字,裡面存的都是距離上次伺服器版本到本地修改之間的差異,千萬别删掉了,合并成功無誤了再删掉。

pull拉取伺服器代碼,這個時候,本地的代碼變成了伺服器上的代碼。

點選貯藏-&gt;應用貯藏區 ,這個時候是把之前的修改合并到本地上,這個時候會提示沖突。

可以在sourcetree裡看到有感歎号,代表沖突檔案,和上面解決沖突方法類似,但是稍微不同,最左邊成了遠端版本,中間為遠端上一個版本,最後才是本地修改。

這個是和我們操作方式有關:我們是先暫存本地修改,先拉取遠端代碼,這個時候local 就成了遠端代碼,最後我們用暫存的合并進去,remote就成了本地修改

這個是由于git自身造成的 它會解決沖突後 生成一個原來沖突的備份,我們可以去掉

<code>git config --global mergetool.keepBackup false</code>