處理沖突
沖突:遠程的master已經被其他人更新到 2repo add 12,但是自己當前的工作區在未pull到最新前,增加了1repo add 12的改動。
右擊最新的節點,選擇Merge to "master" ...
點擊OK后,會彈出失敗的信息。提示需要先commit本地的改動,或者先把本地的改動stash到暫存區。
點擊Stash Save,並且填寫Stash Message
Stash完成后,點擊Merge..
From Branch 選擇 remotes/origin/master
Merge完之后,點擊Stash Pop,把剛才stash到暫存區的文件Pop出來。
提示POP失敗,因為有存在着沖突。點擊是,查看沖突的差別
然后雙擊彈出對話框的沖突列表項
在彈出的沖突處理對話框處理沖突
左邊是Theirs,右邊是mine,右擊紅色的文本區,選擇maine在前還是Theirs在前就可以了。選擇完后,會在下面區域顯示處理沖突后的結果。最后,點擊Mark as resolved即可。
解決代碼沖突
如果commit時出現“You have to update your work copy first.”紅色警告,說明版本庫中的此文件已經被其他人修改了。請先點“ok”按鈕退出。執行update,然后再commit。
如果修改與update得到的代碼不沖突,則自動合並。如果沖突(比如對同一行代碼進行了修改),則出現”One or more files are in a conflicted state.“紅色警告,並產生幾個文件記錄沖突。一般情況下,我們不要直接編輯沖突文件。而按照以下操作手工解決沖突。
在資源管理器中,選擇commit時沖突的那個文件,鼠標右鍵菜單選擇”Edit conficts”。
出現界面,分為”Theirs”、”Mine”和”Merged”3部分,表示”別人修改的內容”、 ”我修改的內容”和”合並后的結果”3部分。我們是要將”別人修改的內容”和”我修改的內容”有取舍地合並起來,形成”合並后的結果”。
合並一般分為4種情況:
保留”我的修改”,舍棄”別人的修改”。鼠標右鍵點擊Mine框的相應行,點擊”Use this text block”。
舍棄”我的修改”,保留”別人的修改”。鼠標右鍵點擊Theirs框的相應行,點擊”Use this text block”。
同時保留”我的修改”和”別人的修改”,並將”我的修改” 放在前面。鼠標右鍵點擊Mine框的相應行,點擊”Use text block from mine before theirs”。
同時保留”我的修改”和”別人的修改”,並將”別人的修改”放在前面。鼠標右鍵點擊Mine框的相應行,點擊”Use text block from theirs before mine”。
合並完成,Ctrl+S存盤,退出。
然后,在資源管理器中,選擇沖突文件,鼠標右鍵菜單選擇”Resolved”,標記沖突已解決。系統會自動刪除因沖突而新建的文件。此時,就可以繼續進行commit操作了。