pycharm提交代码遇到冲突解决方法

一、背景

我在pycharm提交代码的时候,因为对git和pycharm不是很熟悉,在提交代码到远程仓库遇到冲突后选择应用远端代码导致把本地代码全部删除。之后不知道代码恢复方法,又把代码重新写了一遍,非常浪费时间,导致开发效率低下。

这个问题的相关解决方法在网上比较零碎也不详细,下面我通过自己的实践一步步说明如何解决这个问题。

二、冲突产生原因

简单来说,就是一个以上的人对代码进行不同修改,在进行合并的时候git无法判断如何merge。

举例一个最常见的情况,在同一个开发分支上,A和B都拉取了版本1,A在版本1上修改了一行代码,并且把这次修改commit,生成版本2。之后,B不知道A的修改,也在版本1上修改了同一行代码,B打算提交此次修改,在pull的时候就会产生冲突。

三、解决方法

3.1 pycharm误删代码怎么处理

  1. 右键点击当前项目,找到Local History->Show History

image

  1. 点开之后,就会弹出一个框,左侧是文件名称,找到相对应的名称,打开,赋值代码

image

3.2 解决pull --rebase代码冲突

image

command+t产生冲突后,pycharm会弹出提示框把冲突标注出来。

从左到右分别是自己本地修改的代码,你上一次pull下来的未修改前的原版代码,远端分支最新版本。

  • 选择自己修改的版本或者远端最新版本

image

在这个弹出的提示框最下面,Accept Left选择自己的版本或者Accept Right选择远端最新版本

  • 放弃合并

点击abort,放弃合并回到rebase之前的状态

会出现Abort and Rollback applying patch or Skip this file?提示,直接确认就行了

  • 手动合并

和同事商量后在中间的代码块进行合并修改,修改完点击Apply

image

再点击Apply Changes and Mark Resolved,pull之后就会发现,拉下来的冲突代码块展示的是自己刚刚修改的语句。

3.3 备份代码

  1. 最简单的直接把代码所有文件复制一份

没啥好说的,跳过

  1. 保存在git暂存区(本质是一个栈)
  • 单个stash

git stash // 把还未提交的代码存到暂存区

git stash pop // 取出代码

  • 多个stash

git stash save 名称 // 暂存代码

git stash pop // 取出最近一次存的代码

git stash list // 查看所有暂存代码

git stash apply stash@{} // 取出暂存区对应代码,根据list结果写指令

四、重点注意事项

  1. 必须先pull再push!!push没有处理冲突的能力,会直接报错

  2. pull --rebase与远程代码同步,同步过程中会检测冲突

  3. 推荐手动合并!!

  4. 在合并代码前做好备份很重要!!之后误操作导致代码被删也可以直接恢复!!记得备份!!尤其是刚参加工作或者刚参与大型项目的同学

猜你喜欢

转载自juejin.im/post/7130904723409862693