git冲突了怎么办?
git冲突了怎么办?
题眼:等价于,你是如何解决冲突的?避免冲突、发现冲突、解决冲突。
git分支代码冲突,一般有两种情况:
第一种,在不知情的情况下,不同分支修改同一块代码(可以是同名文件)后,双方进行合并,此时会出现代码冲突。
第二种,在已知晓原分支已经更新,并且修改过同一块代码,进行分支拉取更新时,此时也会出现代码冲突。
注意,一定是同一文件的同一代码块。如果A改了第五行,B在最后追加了1行,那么双方不会出现大的问题,可以选择直接合并,不需要手动修改。
如果在合并两个分支时报出冲突,可以直接停止合并,退出。也可以选择继续解决冲突,选择合并分支。合并的方式为:
- 先更新本地仓库,保证要合并的分支都是最新的分支。
- 使用merge合并两个分支,此时会提示哪些文件的那些行数存在冲突。
- (最重要)出现冲突的文件,仔细排查冲突内容,解决掉冲突。
- 将解决后的文件添加到提交区,执行commit 提交。这样就可以解决冲突了。
参考答案:
(面试官其实不想听你在网上找的乱七八糟的方案。他想听你实际开发中的使用。)
我们公司新人培训的时候特别讲过git合并代码,解决冲突的问题。当时导师给我们讲过,以前有同事没处理好分支冲突导致服务出现故障的。然后,我认为避免冲突要大于解决冲突。
在开发的过程中,我们领导会拉一个开发分支然后大家都从这个开发分支上拉取自己的分支,然后在写代码的时候,尽可能避免同时操作一块代码;如果需求是一个独立模块,鼓励创建新模块而不是在老模块上改造;当需要新增一些方法的时候也是尽可能的在文件的最后面去追加方法,而不是插入,这样子在后面合并冲突的时候能省好多事儿;最后的话,就是尽量少的去改动之前的旧方法,旧注释这些,然后大家统一编码风格,避免缩进啊 空格啊这些出现冲突。
然后,冲突嘛,无论怎么避免还是会出现的。这个时候就需要去解决冲突了,这个时候我遇到过几种情况:
第一种,代码没冲突,注释、换行、缩进等有冲突。那这种就不要解决了,直接以原分支为基准直接覆盖。
第二种,代码有冲突,但都是在文件最后追加的,这种最好解决了。直接两边都添加进来就行了,也不用考虑先后顺序。合并结束后,本地测试下代码,没啥问题就可以提交了。
第三种,代码有冲突,并且是同一方法的多处的冲突。这种情况,我一般都不敢自己处理,都是让领导先帮忙看下,确认下以哪边为准,然后另一边改造。有些时候,我自己也图省事,毕竟不能每次都去麻烦别人,我会先把自己的代码都保存到其他文件,然后再把本地分支删除,从远程分支拉一个最新的代码,再把自己的代码存进去。然后再测试和修改一遍,如果没啥问题就可以提交了。
