Git 衝突是如何產生的及如何解決衝突?
阿新 • • 發佈:2018-11-12
版權宣告:歡迎轉載,轉載請說明出處http://csdn.yanxml.com。Github專案地址https://github.com/SeanYanxml/bigdata。 https://blog.csdn.net/u010416101/article/details/60784811
Git 衝突是如何產生的及如何解決衝突?
- 衝突是如何產生的
- 如何解決衝突
1. 衝突是如何產生的
我們都知道,Git的實現途徑是1棵樹。比如有一個節點樹(point1),
- 我們基於point1進行開發,開發出了結點point2;
- 我們基於point1進行開發,開發出了結點point3;
如果我們在point2和point3內操作了同一類元素,那麼勢必會導致衝突的存在。
主要的思想如下圖1所示:
程式碼: poin1.class
public class Point{
int size;
public void add(){
size+=1;
}
}
人物甲 更新了版本2
程式碼: poin2.class
public class Point{
int size;
public void add(){
size+=2;
}
}
人物乙 更新了版本3
程式碼: poin3.class
public class Point{
int size;
public void add(){
size+=3;
}
}
場景如下,甲乙都是根據point.java 檔案進行了開發。甲開發出了版本2,並且提交了程式碼;乙開發出了版本3,也需要提交了程式碼,此時將會報錯存在衝突。
為什麼呢?因為甲開發完了版本,提交了版本之後,此時遠端的程式碼已經是版本2點程式碼了,而乙是基於版本1進行的開發出了版本3。所以,乙想要提交程式碼,勢必要將自己的程式碼更新為版本2的程式碼,然後再進行提交,如果存在衝突則解決衝突後提交。
2. 衝突是如何解決的
上面已經詳細的說明了衝突時如何產生的,那麼又該如何解決衝突呢?
解決衝突通常使用如下的步驟即可:
情況1 無衝突
- 先拉取遠端的程式碼,更新原生代碼。然後提交自己的更新程式碼即可。
情況2 有衝突
- 拉取遠端程式碼。存在衝突,會報錯。
- 此時我們需要將原生代碼暫存起來 stash;
- 更新原生代碼,將原生代碼版本更新和遠端的程式碼一致即可;
- 將暫存的程式碼合併到更新後的程式碼後,有衝突解決衝突(需要手動進行解決衝突);
- 提交解決衝突後的程式碼。