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

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扩展,你应该能够在工作目录中找到你的本地更改,如下所示:

如果您没有看到任何变化,可能是因为您在错误的子模块上。所以检查所有的项目与潜艇图标如下所示:

当你发现一些未提交的更改:

选择带有工作目录的行,导航到Diff选项卡,右键单击带有铅笔(或+或-)图标的行,选择重置以第一次提交或提交或隐藏或任何你想做的事情。

其他回答

% git状态 头部在5c分离 未为commit暂存的更改: (使用“git add…”来更新将要提交的内容) (使用“git restore…”来丢弃工作目录中的更改)

丢弃局部更改 使用git重置——很难

您可以尝试以下方法之一:

变基

对于简单的更改,尝试在它的基础上重新调整,同时拖动更改,例如。

git pull origin master -r

所以它会在取回后把你当前的分支应用到上游的分支上。

这相当于:checkout master, fetch和rebase origin/master git命令。

这是一种潜在危险的操作方式。它重写了历史,这不是一个好兆头,因为你已经出版了那段历史。除非你仔细阅读了git-rebase(1),否则不要使用这个选项。


结帐

如果你不关心你的局部变化,你可以暂时切换到其他分支(强制),然后切换回来,例如。

git checkout origin/master -f
git checkout master -f

重置

如果您不关心您的本地更改,尝试将其重置为HEAD(原始状态),例如。

git reset HEAD --hard

如果上面没有帮助,它可能是你的git规范化文件(.gitattributes)中的规则,所以最好提交它所说的。或者你的文件系统不支持权限,所以你必须在git配置中禁用filemode。

相关:我如何强制“git拉”覆盖本地文件?

git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index

第一个命令将更改临时存储在存储区中,并从工作目录中删除它们。

第二个命令切换分支。

第三个命令恢复您在stash中存储的更改(——index选项用于确保暂存文件仍然是暂存的)。

这可能是CRLF问题造成的。

参见:为什么我应该使用核心。在Git中为true ?

使用这个来拉并强制更新:

git pull origin master
git checkout origin/master -f