无法切换git分支:“未跟踪文件”但工作目录清理

时间:2012-11-21 17:53:19

标签: git

我想切换分支。但得到错误

error: Untracked working tree file 'foo.phtml' would be overwritten by merge.

如果我删除此文件,则会抱怨下一个文件。问题是两个分支中的文件存在很大差异。

这就是我的尝试:

$ git reset --hard HEAD
HEAD is now at 8a2a95c Initial checkin
$ git checkout otherbranch
error: Untracked working tree file 'foo.phtml' would be overwritten by merge.
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 1 and 677 different commit(s) each, respectively.
#
nothing to commit (working directory clean)

这里有什么问题?

我也已经尝试了

git clean -f -d

2 个答案:

答案 0 :(得分:6)

您遇到的问题是,您要检出的分支包含许多文件,例如foo.phtml,这些文件未在当前分支中跟踪。您似乎可以删除文件,因此请尝试:

git checkout -f otherbranch

答案 1 :(得分:4)

如果您以后关注这些文件,请使用

git stash -u

将清理您的工作目录但是如果您丢失了某些东西,您可以从藏匿处取回它。现在你可以继续检查你的其他分支。

另一种情况是文件在一个分支中被忽略而在另一个分支中不被忽略。在这种情况下,您应该使用git checkout -f theotherbranch跟进stash命令(如果git status显示更改了某些内容)。