Py学习  »  Git

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

gabogabans • 4 年前 • 1140 次点击  

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

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

wp-content/w3tc-config/master.php

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

所以我跑了,

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

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

有什么想法吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38581
 
1140 次点击  
文章 [ 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    6 年前

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

重碱

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

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    5 年前
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