如何忽略git pull关于我的本地更改的错误将被合并覆盖?

如何在git pull上忽略以下错误消息?

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

如果我覆盖它们呢?

我已经尝试了像git pull -f这样的东西,但没有任何效果。

要清楚,我只想覆盖特定的变化,而不是一切。

如果你想从你的工作副本中删除所有的本地修改,只需要保存它们:

 git stash save --keep-index 

如果你不再需要它们,你现在可以放弃这个存储:

 git stash drop 

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

  1. 提交一些你不想覆盖的东西,然后使用上面的方法。
  2. 使用git checkout path/to/file/to/revert您希望覆盖的更改。 确保文件没有通过git reset HEAD path/to/file/to/revert

好了,在另外两个答案的帮助下,我提出了一个直接的解决scheme:

 git checkout HEAD^ file/to/overwrite git pull 

这适用于我覆盖所有本地更改,并不需要身份:

 git reset --hard git pull 

这是一个抛弃阶段性变化的解决scheme:

 git reset file/to/overwrite git checkout file/to/overwrite 

您可以在进行合并之前提交更改,也可以隐藏它们:

  1. git stash
  2. git merge origin/master
  3. git stash pop

我解决这个问题的方法是:

 git checkout -- <file> 

然后我可以覆盖文件,只是使用:

 git pull 

如果您的回购包含less量从master删除的文件:

  1. git checkout master
  2. git fetch origin
  3. git reset --hard origin/master
  4. git checkout -b newbranch

在最近的Git中,您可以在pull命令上添加-r / --rebase命令,以在获取后--rebase上游分支顶部的当前分支。 这个警告应该消失,但是有一个风险,你会得到一些你需要解决的冲突。


或者,您可以强制检出不同的分支,然后再回到master ,例如:

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

然后像往常一样再拉:

 git pull origin master 

使用这种方法可以节省您从git stashgit stash )和潜在的权限问题, git reset HEAD --hard文件( git reset HEAD --hard ),删除文件( git clean -fd )等等的时间。此外,上面更容易记住。

有时候,这些都不起作用。 令人烦恼的是,由于我认为LF是一个事情,将会起作用的是删除文件, 然后拉动。 不是我推荐这个解决scheme,但如果文件不存在,git不会无用地通知您,您的更改(甚至可能不会更改)将被覆盖,并让您继续。

使用风险自负。

你可以使用这个覆盖文件

 git checkout file_to_overwrite 

如果你想覆盖特定的变化,你需要一些方法告诉它你想忘记哪些。

你可以尝试select性地git stash --patch你想要放弃的更改,使用git stash --patch ,然后使用git stash --patch放弃该存储。 然后,您可以拉入远程更改并像平常一样合并它们。

解决这个问题的最好方法是:

 git checkout -- <path/file_name> 

之后,您可以通过以下方式覆盖文件:

 git pull origin master 

我有一个这样的特例:我有一个文件与–assume – 没有改变。 这很难find,因为git status命令没有显示任何更改

这对我来说是放弃在现场远程服务器的变化,并从源代码pipe理github拉

 git reset --hard git pull origin master 

我忽略了我的回购中的一个文件,当我做git pull upstream master我得到了以下错误:

错误:对以下文件的本地更改将被merge:myfile.js覆盖请在提交更改或隐藏之前将其合并。 中止

为了解决它,我做了以下

 git update-index --no-assume-unchanged myfile.js 

然后我做了git status并得到这个消息

在分支主机上你的分支由4个提交后面的“origin / master”,可以被快速转发。 (使用“git pull”来更新你的本地分支)

没有为commit提交的更改:(使用“git add …”更新将提交的内容)(使用“git checkout – …”放弃工作目录中的更改)

修改:myfile.js

没有更改添加到提交(使用“git add”和/或“git commit -a”)

然后我做了git checkout myfile.js后面跟着git pull upstream master 。 这次git pull操作成功了。

我从主人那里遇到了这个问题。

我处理它的方式。 使用Visual Studio,

  1. 首先,我对我的解决scheme执行撤消提交。
  2. 然后做Git拉的过程。

希望这可以帮助!

如果你想保持服务器上的生产变化,只需要合并成一个新的configuration项,处理方法如下: git stash git pull git stash pop也许你不会执行所有的操作,你可以知道你下一步可以做什么

如果这个错误是因为行尾,

 git add git checkout mybranch 

将工作。 我不太确定它为什么起作用。

这是我解决问题的策略。 这将会有点长,但我希望这将有助于大量寻找解决scheme的人。

问题陈述

我们需要对超过10个文件进行更改。 我们尝试了PULL (git pull origin master)但是GIT喊道。

错误:对以下文件的本地更改将被合并覆盖:请在提交更改或隐藏之前将其合并。

我们尝试执行,然后做了pull但也没有工作。

实际上我们是在DIRTY阶段,因为这些文件是在“暂存区”又名“索引区”,有的在“头区”又名“本地GIT目录”。 而我们想要从服务器上得到更改。

以清晰的方式检查此链接以获取有关Git不同阶段的信息GIT阶段

我们遵循以下步骤

  - git stash ( this made our working directory clean. Your changes are stored on stack by GIT ) - git pull origin master ( Pull the changes from the server ) - git stash apply ( Applied all the changes from stack ) - git commit -m 'message' ( Committed the changes ) - git push origin master ( Pushed the changes to the server ) - git stash drop ( Drop the stack ) 

让我们了解什么时候和为什么你需要存储

如果您处于垃圾状态,意味着您正在对文件进行更改,然后由于某种原因被强制拔出或切换到其他分支以进行一些非常紧急的工作,因此此时您不能拔出或切换直到你做出改变。 Stash命令在这里是一个援助之手。

从这本书ProGIT第二版

通常情况下,当你在你的项目的一部分工作,事情是在一个混乱的状态,你想切换分支一些工作的其他东西。 问题是,你不想做一半的工作,以便稍后可以回到这一点。 这个问题的答案是git stash命令。 隐藏工作目录的肮脏状态 – 也就是修改的追踪文件和暂存的更改 – 并将其保存在一堆未完成的更改中,您可以随时重新应用这些更改。

希望这对你们有好处。