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

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/info/exclude中的排除文件,并且git update-index——assume-unchanged <file>'ed了一些文件。

其他回答

要在解决此问题时记录新创建的文件:

如果你有新创建的文件,你可以创建一个本地更改的补丁,拉入远程合并,并在远程合并完成后应用你的本地补丁,如下所示:

进行本地更改。(不要承诺)。为新创建的文件创建补丁需要分段(因为它们仍然无法跟踪)

转到添加 。

创建一个补丁来保存记录

Git diff——缓存> myppatch .patch

丢弃本地更改并删除新的本地文件

Git重置——很难

把变化

git pull

应用补丁

去应用mypatch.patch

Git将合并更改,并为未合并的更改创建.rej文件。

根据Anu的建议,如果你在应用补丁时有问题,试试:

Git apply——reject——whitespace=fix myppatch .patch 本回答git: patch does not apply详细讨论了这个问题

享受您在特性上的持续工作,完成后提交您的局部更改。

对我来说,只有重新开始,努力工作。

承诺不是一个选项,因为没有什么可承诺的。

藏东西是不可能的,因为没有东西可以藏。

看起来它可能来自。git/info/exclude中的排除文件,并且git update-index——assume-unchanged <file>'ed了一些文件。

这解决了我的错误:

我在分支A上

git stash

移动到主分支:

git checkout master 
git pull*

回到我的分支,A

git checkout A 
git stash pop*

如果只有一个文件在本地更新,并且您想要丢弃该文件中的更改,那么您可以执行以下操作——

// Pull latest activities-page.tsx from remote and discard local changes.
git checkout activities-page.tsx  
//Pull latest branch
git pull origin master

对我来说,这很有效:

Git重置——很难

然后

Git拉原点<*当前分支>

在那之后

Git checkout <*branch>