衝突是指當你在提交或者更新代碼時被合併的文件與當前文件不一致。讀起來有點繞,結合下面的案例理解。git
從上面對衝突的定義來看,衝突時發生在同一個文件上的。程序員
常見衝突的生產場景以下服務器
git的合併中產生衝突的具體狀況:
<1>兩個開發者(分支中)修改了同一個文件(無論什麼地方)
<2>兩個開發者(分支中)修改了同一個文件的名稱
注意:兩個分支中分別修改了不一樣文件中的部分,不會產生衝突,能夠直接將兩部分合並。app
總結:上面各類狀況的本質都是,當前文件與合併文件不一致,所以不論哪一種狀況其解決衝突的方法是同樣的。ide
模擬場景:idea
假設有另個開發人員開發同一個項目,而且編寫同一個文件,工做流程以下:spa
1.01號程序員先上傳文件conflict.txt,並繼續在conflict.txt上寫代碼;3d
2.02號程序員更新項目代碼,並在conflict.txt上寫代碼,寫完後,在提交到遠程服務端;blog
3.當01號程序員把寫完後,準備提交代碼了,這時的正規操做手法,先更新在提交,可是在更新的時候必然會衝突,由於這時候更新的代碼conflict.txt與本地倉庫代碼conflict.txt不一致開發
提交前,我要更新,衝突了:
解決方案以下:
accept yours:表明以本身的爲準;
accept theris:表明以更新下來的文件爲準;
merge:表明手動合併
通常解決衝突咱們都是選擇merge
將須要的內容點擊:">>"既能夠合併內容到result中,不須要的內容點擊「x」便可,合併完成後點擊apply便可。
值得注意的是,最將全部的「x >>」符號都要處理完,不須要的點擊「x」,須要的點擊「>>」
最後,不管是什麼場景下產生的衝突解決方法是同樣的。
多人協做開發的時候,若是出現了你沒有改過的文件跟你衝突了,必定要去找到當事者,說清楚是如何衝突的;
而後協商解決,千萬不要擅自拉別的分支去試圖解決衝突,或找文件覆蓋,更或者以本身的文件爲準.
同時記住,解決了以後,要add 和 commit 最後push.爲保證萬無一失,最後在衝突都解決以後,重啓項目;
保證至少不會有當即奔潰的現象發生.而後纔去提交,push.
提交的時候,必定要保持清醒,先搞清楚本身要提交的文件之間的關係,而後再提交,這樣纔不會有文件缺失的問題,形成奔潰.
若是任務比較多,又開了多個分支,分別進行開發,再次強調,必定要清楚本身在各個分支上作了什麼,本身要提交的是什麼.最好是能作個詳細的筆記,沒有把握寧願不要去提交到生產服務器.
提交代碼的時候不要走神,由於這是一個神聖的時刻!