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

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

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

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

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


当前回答

我忽略了我的repo中的一个文件,当我执行git pull upstream master时,我得到了以下错误:

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

为了解决这个问题,我采取了以下措施

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

然后我做了git状态并得到了这条消息

在分支主机上您的分支落后于“origin/master”4次提交,并且可以被快速转发。(使用“git pull”更新本地分支)未提交的更改:(使用“git add…”更新将提交什么)(使用“gitcheckout--…”放弃工作目录中的更改)修改:myfile.js未向提交添加任何更改(使用“gitadd”和/或“gitcommit-a”)

然后我执行git checkout myfile.js,然后执行git pull upstream master。这次git拉动操作成功。

其他回答

只需提交本地更改并合并提交-a

git pull --rebase --autostash

-r、 --rebase[=false|true|合并|保留|交互式]如果为true,则在提取后的上游分支。如果有与上游相对应的远程跟踪分支

--autostash,--无autostash在开始重新基础之前,如果需要,并在完成后应用隐藏条目


我不知道为什么这个问题还没有答案,但正如你们所看到的,解决方法很简单。这里的所有答案都是相同的:删除/保存本地更改并应用到上游,然后(如果保存)在顶部应用本地更改。

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

我的案子(可能也是你的):

我有本地更改(工作目录中的更改):

当我尝试进行远程更改时,我收到错误:

这些更改与本地更改不相交:

因此,当我拉动--rebase--autostash时,保存并应用的本地更改不会自动出现任何问题

现在我的本地变化有点低:

如果您想从工作副本中删除所有本地更改(包括未被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暂存。

实例

[root@localhost www]# git pull
Username for 'http://159.65.151.11': amol
Password for 'http://amol@159.65.151.11':
remote: Counting objects: 34, done.
remote: Compressing objects: 100% (34/34), done.
remote: Total 34 (delta 13), reused 0 (delta 0)
Unpacking objects: 100% (34/34), done.
From http://159.65.151.11/OpenCC
   f793c8e..b8fe60c  v1.18.0_24Feb2022 -> origin/_v1.18.0_24Feb2022
error: Your local changes to the following files would be overwritten by merge:
        cc/routes/web.php
Please, commit your changes or stash them before you can merge.
Aborting

解决方案(忽略本地文件中已提交的更改)

git checkout HEAD^ cc/routes/web.php
git pull

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

假设您的远程回购有一些分支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
}