yisainan / web-interview

我是齐丶先丶森,收集整理全网面试题及面试技巧,旨在帮助前端工程师们找到一份好工作!更多详见公众号「前端面试秘籍」
MIT License
2.62k stars 505 forks source link

[Git] 9.提交时发生冲突,你能解释冲突是如何产生的吗?你是如何解决的? #1005

Open qiilee opened 4 years ago

qiilee commented 4 years ago

答案:

1. 冲突是如何产生的

我们都知道,Git的实现途径是1棵树。比如有一个节点树(point1),

point1.js

function test() {
  console.log(a);
  var a = 1;
}

人物甲 更新了版本2 代码: poin2.js

function test() {
  console.log(a);
  var a = 2;
}

人物乙 更新了版本3 代码: poin3.js

function test() {
  console.log(a);
  var a = 3;
}

场景如下,甲乙都是根据point.js文件进行了开发。甲开发出了版本2,并且提交了代码;乙开发出了版本3,也需要提交了代码,此时将会报错存在冲突。

为什么呢?因为甲开发完了版本,提交了版本之后,此时远端的代码已经是版本2点代码了,而乙是基于版本1进行的开发出了版本3。所以,乙想要提交代码,势必要将自己的代码更新为版本2的代码,然后再进行提交,如果存在冲突则解决冲突后提交

2. 冲突是如何解决的

上面已经详细的说明了冲突时如何产生的,那么又该如何解决冲突呢?

解决冲突通常使用如下的步骤即可:

先拉取远端的代码,更新本地代码。然后提交自己的更新代码即可。

拉取远端代码。存在冲突,会报错。 此时我们需要将本地代码暂存起来 stash; 更新本地代码,将本地代码版本更新和远端的代码一致即可; 将暂存的代码合并到更新后的代码后,有冲突解决冲突(需要手动进行解决冲突); 提交解决冲突后的代码。