當咱們向遠程git服務器提交某一個文件的修改時,恰巧這個文件相同的修改地方其餘人也有修改,而且已經提交到服務器,這時衝突就產生了. 一般,當咱們合併兩個相同的地方都有修改的分支時,都會產生衝突.git
出現衝突時git不知道如何自動合併,須要咱們解決衝突手動合併. 若是是文本文件,git會在有衝突的地方做上標記(如 HEAD >>> ==== <<< HASH_ID等),標記哪些是當前分支的修改,哪些是其餘分支的修改.參考這些標記,解決衝突比較簡單.服務器
若是二進制文件發生衝突,不方便查看git插入的衝突標記, 解決比較棘手,一般最簡單的解決方法是提早溝通好,相同修改的地方二選一.
git checkout FILE --ours [ --theirs ]
markdown
–ours 表示檢出當前分支,即保存當前分支的改動,丟棄另外分支的改動.
–theirs 表示檢出另外分支, 即保存另外分支的改動,丟棄當前分支的改動.spa
舉個栗子:
有分支A和B, 當前咱們在分支A上, 須要把分支B合併到分支A, HashMap.c文件發生衝突了.
git checkout HashMap.c –ours 表示衝突的地方採用A分支上的修改,丟棄B分支上的修改.
git checkout HashMap.c –theirs 表示衝突的地方採用B分支上的修改,丟棄A分支上的修改..net
解決完衝突後,就能夠像往常同樣 git add git commit了.code