如何忽略 Git pull 中出现的以下错误消息?
以下文件的本地更改将被合并覆盖
如果我想要重写它们怎么办?
我尝试了像 git pull -f
这样的方法,但都没有起作用。
需要明确的是,我只想覆盖特定的更改,而不是所有的更改。
如果您想从工作副本中删除所有本地更改 - 包括git未跟踪的文件 - 只需将它们存储起来:
如果您想要删除工作副本中的所有本地更改 - 包括那些git没有跟踪的文件 - 只需将它们暂存即可:
git stash push --include-untracked
如果你不再需要它们,现在可以丢弃那个藏品:git stash drop
如果您不想储藏已经暂存的更改(例如使用git add
),则请添加选项--keep-index
。但是要注意,如果这些暂存的更改与上游的更改相冲突,仍将阻止合并。
如果您只想覆盖本地更改的特定部分,有两种可能性:
提交您不想覆盖的所有更改,然后对其余更改使用上述方法。
对于您希望覆盖的更改,请使用git checkout path/to/file/to/revert
。确保该文件未通过git reset HEAD path/to/file/to/revert
进行暂存。
git checkout HEAD^ path/to/file/to/revert
。使用 HEAD^ 才是关键所在。 - maesave --keep-index
"。 - Peter Mortensen这对我很有效,可以覆盖所有本地更改,而且不需要身份验证:
git reset --hard
git pull
git pull
工作,那么这是最简单的解决方案。 - mikeygit pull
抱怨了这个文件,那么这种方法就不起作用了,因为未来的提交已经添加了一个具有相同文件路径的文件。 - Sad Pencil在另外两个回答的帮助下,我想到了一个直接的解决方案:
git checkout HEAD^ file/to/overwrite
git pull
这里有很多答案,我不想再添加另一个,但以上所有的方法都比它们需要的要繁琐。Git经常会变得混乱并说我的文件已被修改(无法还原因为它们没有变化,但是我无法拉取因为它们似乎已经改变)。到目前为止,我发现最简单和最快的方法是:
git stash
git stash drop
git pull
注意:本地更改将会丢失
git pull
抱怨了这个文件,那么这种方法就不起作用了,因为未来的提交已经添加了一个具有相同文件路径的文件。 - Sad Pencil这是一个丢弃已暂存更改的解决方案:
git reset file/to/overwrite
git checkout file/to/overwrite
在合并前,您可以将更改提交,也可以将它们存储:
git stash save
git merge origin/master
git stash pop
如果您想放弃对一个文件所做的本地更改,可以执行以下操作:
git checkout -- <file>
然后你可以通过以下方式来覆盖文件中的最新版本:
git pull
git reset HEAD~
撤销该版本,然后再执行 git checkout
。 - dopexxxgit checkout -- <file>
fails with error: pathspec '<file>' did not match any file(s) known to git.
- A__git pull --rebase --autostash
-r, --rebase[=false|true|merges|preserve|interactive]
When true, rebase the current branch on top of the
upstream branch after fetching. If there is a
remote-tracking branch corresponding to the upstream
我不知道为什么这个问题还没有得到答案,但是解决方案非常简单。所有答案都建议同样的步骤:删除/保存本地更改并应用上游,然后(如果你保存了)在上面应用你的本地更改。
--autostash, --no-autostash Before starting rebase, stash local modifications away if needed, and apply the stash entry when done
git pull --rebase --autostash
的步骤如下:
1. your local changes saved by `--autostash` 2. your local commits saved by `--rebase` 3. commits from upstream applied to your branch 4. your local commits are restored on top of upstream 5. your local changes are restored to working directory
我的情况(也可能是你的情况):
我有本地更改(在工作目录中的更改):
当我尝试拉取远程更改时,我会收到错误提示:
这些更改与本地更改不重叠:
因此,当我使用
pull --rebase --autostash
时,本地更改会被自动保存和应用,没有任何问题。现在我的本地更改稍微降低了一些:
如果您的代码库中包含一些从 master
中删除的文件:
git checkout master
(切换到主分支)git fetch origin
(从远程仓库获取最新代码)git reset --hard origin/master
(强制将本地代码与远程代码同步)git checkout -b newbranch
(创建并切换到一个新的分支)git reset --hard origin/<branch>
确实有帮助! - Lenka Čížkovágit checkout -b newbranch
不在范围内。问题是拉取,所以应该使用 git pull
。 - lcompare
git config core.fileMode false
的意思是“关闭 Git 对文件模式的检查”,这将节省我的时间。 - Nolwennig