如何忽略Git pull上的以下错误消息?
您对以下文件的本地更改将被合并覆盖
如果我想覆盖它们怎么办?
我试过像git pull-f这样的方法,但没有任何效果。
要明确的是,我只想覆盖特定的更改,而不是所有更改。
如何忽略Git pull上的以下错误消息?
您对以下文件的本地更改将被合并覆盖
如果我想覆盖它们怎么办?
我试过像git pull-f这样的方法,但没有任何效果。
要明确的是,我只想覆盖特定的更改,而不是所有更改。
当前回答
如果使用git lfs并且文件指针被实际文件覆盖,也会出现此消息。
然后使用:
git stash
git lfs migrate import
git pull
我案子的全部结果
λ git stash
Saved working directory and index state WIP on master: 5d4ad47 Merge branch 'feature/...' into 'master'
Encountered 1 file(s) that should have been pointers, but weren't:
public/apple-touch-icon.png
λ git pull
Updating 5a4ad44..b25f79d
error: Your local changes to the following files would be overwritten by merge:
public/apple-touch-icon.png
Please commit your changes or stash them before you merge.
Aborting
λ git lfs migrate import
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (0/0), done
migrate: Updating refs: ..., done
migrate: checkout: ..., done
λ git pull
Updating 5d4ad47..a25c79a
Fast-forward
public/apple-touch-icon.png | Bin 2092 -> 130 bytes
public/favicon.ico | Bin 6518 -> 1150 bytes
2 files changed, 0 insertions(+), 0 deletions(-)
看见https://github.com/git-lfs/git-lfs/issues/2839
其他回答
我有一个特殊的情况:我有个文件--假设它没有改变。很难找到,因为gitstatus命令没有显示任何更改
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时,保存并应用的本地更改不会自动出现任何问题
现在我的本地变化有点低:
出现错误“您对以下文件的本地更改将被合并覆盖”,因为您在本地回购中有一些尚未提交的更改,因此在从远程回购中提取之前,只需提交本地回购中的更改。
假设您的远程回购有一些分支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
}
这里有太多的答案,我不想再添加一个,但以上所有的答案都比它们需要的要笨拙。我必须一直这样做,因为Git似乎变得困惑,并表示我修改了未更改的文件(无法恢复,因为它们没有更改,但我无法拉动,因为它们应该已更改)。到目前为止,我发现最简单、最快的是:
git stash
git stash drop
git pull
注意:本地更改将丢失
如果您想从工作副本中删除所有本地更改(包括未被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暂存。