error: The following untracked working tree files would be overwritten by merge:

error: The following untracked working tree files would be overwritten by merge:

翻译一下就是:

错误:以下未跟踪的工作树文件将被合并覆盖:

E:\09-code\06-Turbulent_flow_spectrum>git branch
  dev_zgd
* master

E:\09-code\06-Turbulent_flow_spectrum>git pull origin master --allow-unrelated-historie
From http://10.35.161.175/zhaoguandong/mygitlabproject
 * branch            master     -> FETCH_HEAD
error: The following untracked working tree files would be overwritten by merge:
        .idea/workspace.xml
Please move or remove them before you merge.
Aborting

E:\09-code\06-Turbulent_flow_spectrum>

问题分析:

  • 问题出在 Error 所列出的文件在本地的当前分支下未授权给 git 追踪,但同样命名的文件,也即出现在另一个(远程)分支下的同一文件却正在远程仓库或其它分支被 git 进行追踪,接下来的操作(git merge/checkout …)使得 git 需要呈现的是远程或另一个分支下被追踪的同名文件,但 git 并不知道该如何处理当前状态下这些未被追踪的同名文件,请求你将它们移开或删除,从而在你想要进行的操作之后直接呈现这些文件在目标状态下的版本。

解决方案

❓ 如果你想保留这些未追踪文件的变化
将这些提醒撞名的文件添加到 git 的追踪当中,并利用 stash 将这些文件的状态进行存放备份,然后执行你本来想要执行的 git 命令 overwrite 这些文件。实现:

$ 1. 利用 add 将这些文件进行追踪
$ 2. git stash  # 利用 stash 暂存这些文件的状态 【注:stash 将暂存当前状态下所有未 push 的改变】
$ 3. 执行你本来想要执行的命令 (git pull/merge/checkout ...)

❓ 这些文件已经过时或纯属冗余,别 bb,我就想 overwrite
那很简单,选择一切带有 -f 的操作,谨慎使用简单恐怖的 clean 命令。实现举例:

$ git checkout -f target-branch  # override 未追踪但撞名的文件
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值