如何忽略Git pull上的以下错误消息?

您对以下文件的本地更改将被合并覆盖

如果我想覆盖它们怎么办?

我试过像git pull-f这样的方法,但没有任何效果。

要明确的是,我只想覆盖特定的更改,而不是所有更改。


当前回答

试试这个

git fetch --all 

git reset --hard origin/master

git pull origin master

对我来说,用力拉

其他回答

出现错误“您对以下文件的本地更改将被合并覆盖”,因为您在本地回购中有一些尚未提交的更改,因此在从远程回购中提取之前,只需提交本地回购中的更改。

假设您的远程回购有一些分支xyz并且您希望将远程repo xyz分支合并到(复制到)本地repo xyx分支,

{
git checkout xyz                  //check out to the respective branch in local repo
git commit -m "commiting message" //commit changes if any, in local repo branch xyz
git pull                          //it pulls remote xyz branch into local xyz branch
}

这是我解决问题的策略。

问题陈述

我们需要对10多个文件进行更改。我们尝试了PULL(git PULL origin master),但git喊道:

错误:您对以下文件的本地更改将被覆盖通过合并:请先提交更改或将其隐藏合并

我们尝试执行commit,然后执行pull,但它们也不起作用。

解决方案

实际上,我们处于肮脏的阶段,因为这些文件位于“暂存区”,也就是“索引区”,有些文件位于“头部区”,即“本地Git目录”。我们想从服务器中提取更改。

查看此链接,以明确方式获取有关Git不同阶段的信息:Git阶段

我们遵循以下步骤

git stash(这使我们的工作目录变得干净。您的更改通过git存储在堆栈中)。git pull-origin master(从服务器中拉取更改)git stash apply(应用堆栈中的所有更改)gitcommit-m“message”(已提交更改)git推送原始主机(将更改推送到服务器)git stash drop(删除堆栈)

让我们了解您何时以及为什么需要隐藏

如果您处于脏状态,则意味着您正在对文件进行更改,然后由于任何原因,您被迫拉入或切换到另一个分支以进行一些非常紧急的工作,因此此时,在提交更改之前,您无法拉入或转换。隐藏命令在这里作为帮助。

摘自ProGIT,第2版:

通常,当你在项目的一部分工作时一个混乱的状态,你需要切换分支来处理其他东西。问题是,你不想完成了一半的工作,这样你就可以稍后回到这一点。这个这个问题的答案是gitstash命令。Stashing需要工作目录的脏状态–即修改后的跟踪文件和暂存更改–并将其保存在未完成的堆栈中您可以随时重新应用的更改。

如果您想从工作副本中删除所有本地更改(包括未被git跟踪的文件),只需将其隐藏:

git stash push --include-untracked

如果你不再需要它们,你现在可以放下这些东西:

git stash drop

如果您不想隐藏已经暂存的更改(例如使用gitadd),那么添加选项--keep-index。然而,请注意,如果这些阶段性的更改与上游的更改发生冲突,这仍然会阻止合并。


如果您只想覆盖本地更改的特定部分,有两种可能:

提交您不想覆盖的所有内容,其余部分使用上面的方法。对于要覆盖的更改,请使用git checkout path/to/file/to/revert。确保文件未通过git reset HEAD path/to/file/to/revert暂存。

对于Pycharm,您可以执行Git-->Revert,然后执行pull。

如果要放弃对一个文件的本地更改,可以执行以下操作:

git checkout -- <file>

然后,您可以使用最新版本覆盖文件,只需执行以下操作:

git pull