我在本地机器上做了一些更新,将它们推送到远程存储库,现在我试图将更改拉到服务器上,我得到了消息;
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 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 diff——缓存> myppatch .patch
丢弃本地更改并删除新的本地文件
Git重置——很难
把变化
git pull
应用补丁
去应用mypatch.patch
Git将合并更改,并为未合并的更改创建.rej文件。
根据Anu的建议,如果你在应用补丁时有问题,试试:
Git apply——reject——whitespace=fix myppatch .patch
本回答git: patch does not apply详细讨论了这个问题
享受您在特性上的持续工作,完成后提交您的局部更改。