我在本地机器上做了一些更新,将它们推送到远程存储库,现在我试图将更改拉到服务器上,我得到了消息;

error: Your local changes to the following files would be overwritten by merge:
wp-content/w3tc-config/master.php
Please, commit your changes or stash them before you can merge.

所以我跑了,

git checkout -- wp-content/w3tc-config/master.php

再试一次,我得到了同样的信息。我假设w3tc更改了服务器上配置文件中的一些内容。我不关心本地副本或远程副本是否在服务器上(我认为远程副本是最好的),我只是希望能够合并我的其余更改(插件更新)。

什么好主意吗?


当前回答

我尝试了第一个答案:得分最高的git stash,但错误消息仍然弹出,然后我找到了这篇文章来提交更改,而不是stash“勉强提交”

错误信息最终消失了:

1:去添加.

2: git commit -m "这是一个额外的提交"

3: git checkout the-other-file-name

然后就成功了。希望这个答案能有所帮助。

其他回答

在拉之前要求提交

git stash git pull pull origin << branch >

如有需要:

Git stash应用

警告:这将删除未跟踪的文件,所以它不是这个问题的一个很好的答案。

以我为例,我不想保留这些文件,所以这对我来说很有效:

Git 2.11及更新版本:

git clean  -d  -fx .

较旧的 Git:

git clean  -d  -fx ""

参考:http://www.kernel.org/pub/software/scm/git/docs/git-clean.html

-x意味着被忽略的文件以及git不知道的文件也会被删除。 -d表示除未跟踪的文件外,还删除未跟踪的目录。 -f命令用于强制运行。

如果你在你的任何文件做了更改;

转到添加 。

然后;

Git commit -m "your message"

在此之后,你可以成功地从你的回购中获取或推入。

使用:

Git重置——很难

然后:

Git拉源主

我遇到的情况是这样的:

错误:您对以下文件的本地更改将被merge覆盖: wp-content / w3tc-config / master.php 请在合并之前提交您的更改或隐藏它们。

除了,在那之前,是遥远的: 实际上是这样的:

您对以下文件的本地更改将被merge覆盖: 一些/ file.ext 请在合并之前提交您的更改或隐藏它们。

发生的事情是(我认为,不是100%肯定)git post receive钩子开始运行,由于远程服务器存储库中的移动变化而搞砸了,理论上,不应该触及。

So what I ended up doing by tracing through the post-receive hook and finding this, was having to go to the remote repository on the server, and there was the change (which wasn't on my local repository, which, in fact, said that it matched, no changes, nothing to commit, up to date, etc.) So while on the local, there were no changes, on the server, I then did a git checkout -- some/file.ext and then the local and remote repositories actually matched and I could continue to work, and deploy. Not entirely sure how this situation occurred, though a couple dozen developers plus IT changes may had something to do with it.