git pull error: Your local changes to the following files would be overwritten by merge:

一个项目,用家里和公司两台电脑开发,比如在公司修改了如下文件:

1
2
3
├── a.php // 未修改
├── b.php // 修改
├── c.php // 新建

忘记提交了,然后在家修改如下文件:

1
2
3
├── a.php // 未修改
├── b.php // 修改
├── c.php // 新建

并提交了。第二天来到公司git pull时候报错:

1
2
3
4
5
6
7
error: Your local changes to the following files would be overwritten by merge:
b.php
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
c.php
Please move or remove them before you merge.
Aborting

解决方案1:如果你想保留公司本地修改的代码,并把git服务器上的代码pull到本地(公司本地昨天修改的代码将会被暂时封存起来)

1.1代码贮藏

1
git stash

1.2拉取版本库代码

1
git pull

此时还是会报错:

1
2
3
4
error: The following untracked working tree files would be overwritten by merge:
c.php
Please move or remove them before you merge.
Aborting

因为文件c.php是新建文件,提示要把文件c.php先移走或删除,那么我们再把c.php移走,然后在拉取

1
2
3
4
5
Updating 9cccba7..ebfcf6d
Fast-forward
b.php | 2 +-
10 files changed, 467 insertions(+), 13 deletions(-)
create mode 100644 c.php

1.3取出贮藏,并把刚刚移走的文件移动回来

1
git stash pop

然后可以使用git diff -w +文件名 来确认代码自动合并的情况.

解决方案2:如果你想完全地覆盖本地的代码,只保留服务器端代码,则直接回退到上一个版本,再进行pull

1
2
git reset --hard
git pull

其中git reset是针对版本,如果想针对文件回退本地修改,使用

git checkout HEAD [file]

坚持原创技术分享,您的支持将鼓励我继续创作!