社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

从远程向我的服务器中使用git pull时出错

gabogabans • 4 年前 • 1159 次点击  

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

错误:合并将覆盖对以下文件的本地更改:

wp-content/w3tc-config/master.php

请提交您的更改或在合并前将其保存。

所以我跑了,

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

然后再试了一次,我得到了同样的信息。我想是的 w3tc 在服务器的配置文件中更改了某些内容。我不在乎本地副本还是远程副本在服务器上运行(我认为远程副本最好),我只想能够合并其余的更改(插件更新)。

有什么想法吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38581
 
1159 次点击  
文章 [ 11 ]  |  最新文章 4 年前
Leo
Reply   •   1 楼
Leo    5 年前

仅限我 git reset --hard 工作。

提交不是一种选择,因为没有什么可提交的。

藏匿不是一种选择,因为没有什么可以藏匿的。

看起来它可能来自中排除的文件 .git/info/exclude 并且拥有 git update-index --assume-unchanged <file> 编辑了一些文件。

hong cai
Reply   •   2 楼
hong cai    5 年前

我试过第一个答案: git stash 得分最高,但错误消息仍然出现,然后我发现本文提交了更改,而不是stash 'Reluctant Commit'

最后错误信息消失了:

1: git add .

2: git commit -m "this is an additional commit"

三: git checkout the-other-file-name

然后成功了。希望这个答案有帮助。:)

Keith Turkowski
Reply   •   3 楼
Keith Turkowski    5 年前

这可能是由CRLF问题引起的。

见: Why should I use core.autocrlf=true in Git?

使用此选项可拉取并强制更新:

git pull origin master
git checkout origin/master -f
CodyBugstein
Reply   •   4 楼
CodyBugstein    6 年前

在我的例子中,我备份了Git抱怨的文件,然后删除了它,提交了它,然后我终于可以签出另一个分支。

然后我替换了文件,复制了内容,继续进行,就好像什么也没发生一样。

Rahul Mankar
Reply   •   5 楼
Rahul Mankar    5 年前

在拉之前请求承诺

  • 暂存
  • Git Pull来源<<BranchName>>

如果需要:

  • Git Stash应用
Dark Matter
Reply   •   6 楼
Dark Matter    5 年前

警告:这将删除未跟踪的文件,因此这不是这个问题的好答案。

在我的情况下,我不想保留这些文件,所以这对我很有用:

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必须强制运行。

Mr Nobody
Reply   •   7 楼
Mr Nobody    6 年前

试试这个

git stash save ""

然后再拉一次

Mike
Reply   •   8 楼
Mike    10 年前

所以我遇到的情况是:

错误:合并将覆盖对以下文件的本地更改: wp-content/w3tc-config/master.php 请提交您的更改或在合并前将其保存。

但在那之前,是偏远的: 所以实际上这是:

远程:错误:合并将覆盖对以下文件的本地更改: 一些/file.ext 请提交您的更改或在合并前将其保存。

发生的事情是(我认为不是100%正面的),由于远程服务器存储库中的移动变化,Git Post接收钩子开始运行并发生故障,从理论上讲,这是不应该触及的。

因此,我最终通过跟踪接收后挂钩发现这一点,不得不转到服务器上的远程存储库,并进行了更改(不在我的本地存储库中,事实上,该存储库说它匹配,没有更改,没有要提交的内容,最新的内容等),因此,在本地,没有任何更改,在服务器上,我执行了 git checkout -- some/file.ext 然后本地和远程存储库实际匹配,我可以继续工作和部署。不完全确定这种情况是如何发生的,尽管几十个开发人员加上IT变更可能与此有关。

Community BalusC
Reply   •   9 楼
Community BalusC    7 年前

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

重碱

对于简单的更改,尝试在其顶部重新定位,同时拖动更改,例如

git pull origin master -r

因此,它将在提取后将当前分支应用于上游分支的顶部。

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

这是一种潜在的危险操作模式。它重写了历史,当您已经发布了历史时,这并不是一个好兆头。除非您已阅读 git-rebase(1) 小心点。


结账

如果您不关心您的本地更改,您可以切换到其他临时分支(使用force),然后将其切换回,例如。

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

重置

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

git reset HEAD --hard

如果上面没有帮助,可能是Git规范化文件中的规则。( .gitattributes )所以,最好还是言出必行。或者文件系统不支持权限,因此必须禁用 filemode 在你的Git配置中。

相关: How do I force "git pull" to overwrite local files?

SOLO
Reply   •   10 楼
SOLO    6 年前
git stash
git pull <remote name> <remote branch name> (or) switch branch
git stash apply --index

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

第二个命令切换分支。

第三个命令恢复存储在存储库中的更改 --index 选项可用于确保阶段文件仍处于阶段)。

Toby Speight
Reply   •   11 楼
Toby Speight    5 年前

不能与本地修改合并。Git保护您不丢失可能重要的更改。

您有三种选择:

  • 使用提交更改

    git commit -m "My message"
    
  • 把它藏起来。

    存储充当一个堆栈,您可以在其中推送更改,并以相反的顺序弹出它们。

    储存,类型

    git stash
    

    进行合并,然后拉出隐藏:

    git stash pop
    
  • 放弃本地更改

    使用 git reset --hard
    git checkout -t -f remote/branch

    或:放弃特定文件的本地更改

    使用 git checkout filename