一. 背景:
今天在把pre-master分支代码合并到master分支时候,出现了代码冲突,当时在没有先解决冲突的情况下,稀里糊涂点击了vscode工具栏左侧的 暂存,现在记录一下。
下图是稀里糊涂暂存的然后 push 到了master分支上,提交git;导致保留了两份代码,这肯定是不行的,我实际想保留的是下面新合并来的代码。
二. 报错信息:
有文件冲突的话,会报错:
git merge pre-master
CONFLICT (content): Merge conflict in utils/config.js
Automatic merge failed; fix conflicts and then commit the result.
三. 解决方法一(借助vscode):
用了git,由于不同的需求可能开了不一样的分支,而不同的分支里,改了同一个文件,那么合并代码的时候,就会有一个问题?到底该采用哪个分支的代码为准呢? 可以看到,没有冲突的文件被放进了暂存栏目下,而合并栏目下,是存在冲突代码的文件。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
<<<<<<< HEAD
<div id="footer">
let name = '111'
</div>
=======
<div id="footer">
let name = '222'
</div>
>>>>>>> pre-master
其中,=======上面是当前分支(也就是master)的代码,=======下面是要合并进来的分支的代码,两者发生了冲突。
上面代码可以看出新改动的是let name = ‘222’ 只需要点击 采用传入的更改 就行;他有几个选择,采用当前更改,采用传入的更改和都采用。也可以选择比较不同。
解决方法二(手动删除冲突):
左侧工具栏会出现冲突文件个数,然后点击冲突文件手动进行修改冲突。
分析两段的代码是实现相同功能而写的重复的代码还是各自实现的不同的功能的代码。 如果是重复代码:两个二选一删除一个,然后再把这些冲突标示符删除即可; 如果不是重复代码,两个都需要保留,只把冲突符号删除即可。
两种方法 冲突解决后都需要再重复一遍流程
git add -A
git commit -m 'xxxx说明'
git push
即可完成一次冲突的合并。
在解决问题过程中也去百度了不少文章,记录一下吧 gitee官方说明如何处理代码冲突 有视频 vscode中如何解决git冲突? vscode 中的git的提交、合并、解决冲突 包含vscode暂存,提交文件说明快捷方式
|