> 技术文档 > 【pyCharm Git】解决报错Git拉取失败 Your local changes will be overwritten by merge. Commit, stash, or revert t

【pyCharm Git】解决报错Git拉取失败 Your local changes will be overwritten by merge. Commit, stash, or revert t

目录

Git拉取失败 Your local changes will be overwritten by merge. Commit, stash, or revert them to proceed.

一、报错场景

二、问题分析

三、解决方法

方法1:保留本地改动的同时,并把Git服务器上的代码pull下来

前言

步骤

方法2:直接覆盖本地的代码,放弃自己本地的改动,只保留服务器端代码

前言

步骤


Git拉取失败 Your local changes will be overwritten by merge. Commit, stash, or revert them to proceed.

一、报错场景

在使用Git pull 代码的时候,出现了这样的问题。

二、问题分析

这是因为本地有文件改动未提交,并且该文件和Git服务器最新版本有冲突,此时pull更新就会提示错误,无法更新。

三、解决方法

方法1:保留本地改动的同时,并把Git服务器上的代码pull下来

前言

先把本地改动暂存到本地仓库,pull代码后再把这部分改动代码拿出来。

stash的好处是可以先将你的改动暂存到本地仓库中,随时可以取出来再用,但是不用担心下次push到服务器时,把不想提交的改动也push到服务器上,因为Stash Changes的内容不参与commit和push。 

步骤

(1)通过VCS -> Git -> Stash Changes,将本地的所有改动暂存到本地仓库。
这一步执行后会撤销本地的所有改动,这时候不用担心自己修改的代码怎么不见了,还可以拿出来的.

创建之后,提示如下,

 

(2)现在可以pull 了。

此时,pull完成后本地代码就更新到最新了,也不会报错了。

(3)如果想把自己修改的部分从本地仓库中再拿出来的话,可以通过VCS -> Git -> unStash Changes 把之前的改动合并到本地。

如果有冲突,自己手动修改即可。

这样就将之前的改动合并到本地。 

OK,可以看到成功将暂存弄回来了。

方法2:直接覆盖本地的代码,放弃自己本地的改动,只保留服务器端代码

前言

当我们用 pycharm 提交代码的时候,每天都要 commit 提交的内容,有时候发现后面写的代码还不如前两天的稳定。

因此,可以直接回退到上一个版本,再进行pull。

这时候想把代码回退到某次 commit 提交,可以使用git的 reset 功能来实现。

步骤

(1)打开pycharm -> VCS -> Git -> Show History ,查看 commit 提交记录。

(2)直接依次点击VCS -> Git -> Reset HEAD...,

会出现一个弹窗,如下图所示,

(3)选择需要的reset模式,reset 回滚有三种类型:

  • Mixed 此为默认方式 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响)
  • soft 回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)
  • hard 回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

这里选择默认的Mixed回滚类型。

(4)To Commit 输入框输入commit id,此处将刚刚上一步查询到的id号输入进去,也就是\"9af94622\"。

(5)回滚之前,可以先点下 Validate 按钮确定下有没这个commit id。

点Reset之后就可以回滚成功啦。

这里我自己也还没有玩过,仅供参考哈~~