git 冲突

目录

前言

git 正常操作

上传本地代码

git合并分支

冲突场景——分支状态变为merging

冲突原理

冲突解决方式

IDE处理

git tortoise


前言

如果你要在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

  1. 安装 git tortoise,一直下一步到最后,然后会提示类似于第一次使用配置的提醒。
  2. 第一次使用配置只需要配置git.exe的文件位置。设置完后这一步,tortoise可以读取git的相关配置,包括git global的相关用户名和密码。
  3. 右键tortoise->Settings,进入到这个界面后可以查看用户名和密码。如果没有可以手工添加。可以查看红框的【Edit global.git】查看相关配置。
  4. 配置完后成,就可以直接用右键进行相关操作。
  • 打开git本地目录,右键git commit->“xxxx”,试图将本地代码push上去。
  • 出现黄色三角号的时候,就会提示文件冲突。
  • 此时右键选择tortoise->Show Log。
  • 选择第一行,然后双击下面的文件,就可以出现冲突文件的版本展示。
  • 然后右键选择要合并的模式,选择保存。
  • 依此类推解决所有有冲突的文件。
  • 然后关闭tortoise的操作界面,到git本地目录里重新进行右键git commit->“xxxx”,试图将本地代码push上去,这次应该是成功的。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章