目录
前言
如果你要在linux下解决git代码的冲突,因为很麻烦,而且很费时。
本文不推荐在linux环境下解决冲突,如果你硬要在linux下,推荐命令
find . -name "*.java" | xargs grep "<<<".
find后面跟着点代表当前路径,你可以根据的实际要求去配置不同的路径地址。
git 正常操作
上传本地代码
git pull
git add .
git commit -m "我要上传代码啦"
git push
git合并分支
--当前分支是master
git checkout master
--把vivichou中的内容Merge进来:
git merge vivichou
冲突场景——分支状态变为merging
- 当git pull代码后,进行git add 并试图push时
- git merge分支的时候
出现冲突时,代码里会加上很多奇怪的符号,解释如下:
<<<<<<< HEAD
本地代码
=======
拉下来的代码
>>>>>>>
冲突原理
(重要)冲突的原理就是git当前的本地分支状态为merging时,如果你的代码里存在上面这一段代码,则不能直接提交。
所以你要解决冲突其实就是在merging状态下,把代码里的<<<>>>>这些符号删干净就行了。举例如下:
冲突时的代码:
<<<<<<< HEAD
print "viviChou"
=======
print "viviChou1"
>>>>>>>
修改后的无冲突的,也就是把<<<和>>>和冲突的代码删除就好
print "viviChou"
冲突的时候是以分支为单位进行pull或merge,所以出现冲突的情况下有可能是多个文件存在冲突,所以这就是在linux下不建议进行代码冲突解决。因为你要针对单个文件一个一个去vi操作,很麻烦。因此,使用windows环境下的IDE或git分支解决工具git tortoise都是一个不错的选择。下面介绍一下这两种解决冲突的方式。
冲突解决方式
IDE处理
- 直接全IDE全局搜<<<字符串,然后一个一个手工选择。如果你就是要自己本地的版本,那就保留HEAD到等号之间的就可以。如果要保留远程分支的版本,那就是保留等号到>>>>之前的代码,然后把<<< HEAD ==== >>>>这些特殊字符都删干净即可。
- 还有一种方式,如果你用IDE是IDEA或pycharm这种,可以在菜单VCS->Checkout from Version Control里配置git。配置完成后,当时git push时,有冲突的时候,IDE会有一个友好的界面让你去操作冲突的代码。
git tortoise
- 安装 git tortoise,一直下一步到最后,然后会提示类似于第一次使用配置的提醒。
- 第一次使用配置只需要配置git.exe的文件位置。设置完后这一步,tortoise可以读取git的相关配置,包括git global的相关用户名和密码。
- 右键tortoise->Settings,进入到这个界面后可以查看用户名和密码。如果没有可以手工添加。可以查看红框的【Edit global.git】查看相关配置。
- 配置完后成,就可以直接用右键进行相关操作。
- 打开git本地目录,右键git commit->“xxxx”,试图将本地代码push上去。
- 出现黄色三角号的时候,就会提示文件冲突。
- 此时右键选择tortoise->Show Log。
- 选择第一行,然后双击下面的文件,就可以出现冲突文件的版本展示。
- 然后右键选择要合并的模式,选择保存。
- 依此类推解决所有有冲突的文件。
- 然后关闭tortoise的操作界面,到git本地目录里重新进行右键git commit->“xxxx”,试图将本地代码push上去,这次应该是成功的。