1. 程式人生 > >Git 衝突是如何產生的及如何解決衝突?

Git 衝突是如何產生的及如何解決衝突?

版權宣告:歡迎轉載,轉載請說明出處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;
  • 更新原生代碼,將原生代碼版本更新和遠端的程式碼一致即可;
  • 將暫存的程式碼合併到更新後的程式碼後,有衝突解決衝突(需要手動進行解決衝突);
  • 提交解決衝突後的程式碼。