【秒懂+解决方案】git error: The following untracked working tree files would be overwritten by checkout: ...

❗️ 问题分析


问题出在 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 未追踪但撞名的文件

参考

The following untracked working tree files would be overwritten by merge, but I don’t care
A replacement for git merge that will overwrite untracked files

你可能感兴趣的:(Git,git,linux)